CLONE -<wicket:enclosure> bug: setObject(null) called for excplicitly invisible 
fields in a non-visible enclosure
-----------------------------------------------------------------------------------------------------------------

                 Key: WICKET-2353
                 URL: https://issues.apache.org/jira/browse/WICKET-2353
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.3.1
            Reporter: Artur Wronski
            Assignee: Igor Vaynberg
             Fix For: 1.3.3


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.

Reply via email to