You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2008/03/28 21:48:24 UTC

[jira] Resolved: (WICKET-1391) bug: setObject(null) called for excplicitly invisible fields in a non-visible enclosure

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

Igor Vaynberg resolved WICKET-1391.
-----------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 1.5-M1)
                   1.3.3

> <wicket:enclosure> bug: setObject(null) called for excplicitly invisible fields in a non-visible enclosure
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1391
>                 URL: https://issues.apache.org/jira/browse/WICKET-1391
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.1
>            Reporter: Edvin Syse
>            Assignee: Igor Vaynberg
>             Fix For: 1.3.3
>
>         Attachments: myproject.zip, wicket-1391-draft.patch.txt
>
>
> It seems that the value for fields that are made invisible because a surrounding enclosure is actually lost on submit of the form.
> Consider the following code:
> public class HomePage extends WebPage {
>     private MyObject myObject;
>     
>     public HomePage(final PageParameters parameters) {
>         myObject = new MyObject();
>         myObject.setField1("field1Value");
>         myObject.setField2("field2Value");
>        
>     Form f = new Form("f", new CompoundPropertyModel(myObject));
>         add(f);
>         f.add(new TextField("field1").setVisible(false));
>         f.add(new TextField("field2"));
>        
>         f.add(new Button("submit") {
>             @Override public void onSubmit() {
>                 System.out.println("Field 2 value should be 'field2Value' but is : " + myObject.getField2());
>             }
>         });
>     }
>     class MyObject implements Serializable {
>         private String field1;
>         private String field2;
>        
>         public String getField1() {
>             return field1;
>         }
>         public void setField1(String field1) {
>             this.field1 = field1;
>         }
>         public String getField2() {
>             return field2;
>         }
>         public void setField2(String field2) {
>             this.field2 = field2;
>         }
>     }
> }
> With the following markup:
> <form wicket:id="f">
>     <wicket:enclosure child="field1">
>          <input type="text" wicket:id="field1"/>
>          <input type="text" wicket:id="field2"/>
>     </wicket:enclosure>
>     <input type="submit" wicket:id="submit"/>
> </form>
> Field1 keeps it's value onSubmit, but the value for field2 is lost, and my model object has null in field2. If I implicitly call setVisible(false) on the TextField for field2, the value is kept onSubmit.
> Igor put better like this I guess:
> when the page renders none of the fields are shown. after submit,
> however, myobject.getfield1() is still "field1value" but
> myobject.getfield2() is null - which implies that textfield2 is still
> processed even though it is inside an enclosure that has been hidden.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.