Yes , indeed , if the form is in the second row (default invisible) , it works , But I cannot get the first row's data (such as radioGroup's model object will become null ). Moreover , Form with multiple row , with something visible and something extensible (default invisible), it is not so rare. If the form is not inside a ListView , it will work. But it just fails if it is inside a ListView.
2010/1/21 Chuck Brinkman <chasb1...@gmail.com> > I stepped through the code and found that the convertedInput is null when > processing submit. I didn't see anything that looked like an error message > from wicket. I look forward to seeing what the wicket developers have to > say. > > I'm just a new wicket user but was interested in this issue. I also found > that if you make the following changes it will work. > <tr wicket:id="more"> > <td colspan="2"> > *<form wicket:id="moreForm">* > <input type="text" size="40" value="Please > leave > comments" > wicket:id="textfield" /> > <input type="submit" value="Submit" > wicket:id="submit" /> > * </form>* > </td> > </tr> > > > *Form<Void> moreForm = new Form<Void>("moreForm"); > more.add(moreForm);* > final TextField<String> textfield = new TextField<String>( > "textfield", new Model<String>()); > *moreForm*.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()); > } > }; > *moreForm*.add(button); > > > On Wed, Jan 20, 2010 at 10:47 PM, smallufo <small...@gmail.com> wrote: > > > This is a full functional Page : > > > > I found this problem only occurs when the form is in the listView : > > If I move the form out of the listView , it works like a charm. > > Bug ? I am not sure... > > > > The link is the screen capture : > > http://xs.to/image-B859_4B57CDD0.gif > > > > > > 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> > > > > > > MyPage.java > > > > package quickstart.ajax; > > > > import java.util.ArrayList; > > import java.util.List; > > > > import org.apache.wicket.ajax.AjaxEventBehavior; > > import org.apache.wicket.ajax.AjaxRequestTarget; > > import org.apache.wicket.ajax.markup.html.form.AjaxButton; > > import org.apache.wicket.markup.html.WebMarkupContainer; > > import org.apache.wicket.markup.html.WebPage; > > import org.apache.wicket.markup.html.basic.Label; > > import org.apache.wicket.markup.html.form.Form; > > import org.apache.wicket.markup.html.form.Radio; > > import org.apache.wicket.markup.html.form.RadioGroup; > > import org.apache.wicket.markup.html.form.TextField; > > import org.apache.wicket.markup.html.list.ListItem; > > import org.apache.wicket.markup.html.list.ListView; > > import org.apache.wicket.model.Model; > > > > 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); > > } > > } > > >