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.

Reply via email to