Re: <wicket:enclosure> bug: setObject(null) called for excplicitly invisible
fields in a non-visible enclosure (Wicket 1.3.1)
-----------------------------------------------------------------------------------------------------------------------------
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
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.