Dynamic Form inconsistent behavior inside/outside a ListView ------------------------------------------------------------
Key: WICKET-2694 URL: https://issues.apache.org/jira/browse/WICKET-2694 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.4.5 Environment: Wicket 1.4.5 , resin-3.1.9 , CentOS 5.4 Reporter: smallufo The original discuss thread is here : http://old.nabble.com/Cannot-get-default-invisible-TextField's-ModelObject---td27251305.html I have a form , which is embedded in a ListView , The form contains a radio button. When user clicks the radio button , a default-invisible textfield is set visible. But I cannot get the textfield's Model Object , it is null ... To make it more clear : When the radio button is clicked , by implement AjaxEventBehavior("onClick") , a default-invisible WebMarkupContainer is set visible , The WebMarkupContainer contains other TextFields , which I cannot get their values at all .... If the form is not embedded in a ListView , everything works fine . I think it is an inconsistent behavior and should be fixed. MyPage.html <table border="1"> <tr> <th>name</th> <th>more ?</th> </tr> <span wicket:id="listView"> <form wicket:id="form"> <tr> <td wicket:id="name">[name]</td> <td> <span wicket:id="radioGroup"> <input type="radio" wicket:id="yes"/>yes <input type="radio" wicket:id="no"/>no </span> </td> </tr> <tr wicket:id="more"> <td colspan="2"> <input type="text" size="40" value="Please leave comments" wicket:id="textfield"/> <input type="submit" value="Submit" wicket:id="submit"/> </td> </tr> </form> </span> </table> public class MyPage extends WebPage { private final static List<String> names = new ArrayList<String>(); static { names.add("Andy"); names.add("Brian"); names.add("Carol"); } public MyPage() { ListView<String> listView = new ListView<String>("listView" , names) { @Override protected void populateItem(ListItem<String> item) { Form<Void> form = new Form<Void>("form"); item.add(form); String name = item.getModelObject(); form.add(new Label("name" , name)); final WebMarkupContainer more = new WebMarkupContainer("more"); more.setVisible(false); more.setOutputMarkupPlaceholderTag(true); form.add(more); final RadioGroup<Boolean> radioGroup = new RadioGroup<Boolean>("radioGroup" , Model.of(Boolean.FALSE)); form.add(radioGroup); Radio<Boolean> yes = new Radio<Boolean>("yes" , Model.of(Boolean.TRUE)); Radio<Boolean> no = new Radio<Boolean>("no" , Model.of(Boolean.FALSE)); radioGroup.add(yes); radioGroup.add(no); yes.add(new AjaxEventBehavior("onClick") { @Override protected void onEvent(AjaxRequestTarget target) { more.setVisible(true); target.addComponent(more); } }); no.add(new AjaxEventBehavior("onClick") { @Override protected void onEvent(AjaxRequestTarget target) { more.setVisible(false); target.addComponent(more); } }); final TextField<String> textfield = new TextField<String>("textfield" , new Model<String>()); more.add(textfield); AjaxButton button = new AjaxButton("submit") { @Override protected void onSubmit(AjaxRequestTarget arg0, Form<?> form) { System.out.println("radioGroup = " + radioGroup.getModelObject() + " , textfield.getModelObject() = " + textfield.getModelObject()); } }; more.add(button); } }; add(listView); } } screen capture : http://xs.to/image-B859_4B57CDD0.gif -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.