You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "smallufo (JIRA)" <ji...@apache.org> on 2010/01/21 18:17:54 UTC

[jira] Updated: (WICKET-2694) Dynamic Form inconsistent behavior inside/outside a ListView

     [ https://issues.apache.org/jira/browse/WICKET-2694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

smallufo updated WICKET-2694:
-----------------------------

    Attachment: wicket2694.tar.gz

quickstart file

> 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
>         Attachments: pic.GIF, wicket2694.tar.gz
>
>
> 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.