Description
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()
});
}
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.
Attachments
Attachments
Issue Links
- is cloned by
-
WICKET-2353 CLONE -<wicket:enclosure> bug: setObject(null) called for excplicitly invisible fields in a non-visible enclosure
- Resolved