我有一个包含2个文本字段的页面(验证为必填文本字段)。由于某种原因,两个文本字段都有自己的保存按钮。 重现我的错误的步骤: 1.删除textfield#1的所有预先填充的数据。单击“保存#1”。 [验证失败。收到错误消息。正如所料。] 2.使用取消按钮并返回上一页。 3.使用“编辑”按钮再次渲染到包含2个文本字段的原始页面。 4.从文本字段#2中删除数据。 5.点击保存#2。 6.保存成功,而预期就像验证失败前一样。
public class FEConfigPanel extends Panel {
public FEConfigPanel(String id, IModel model, FEConfigPage page) {
super(id, model);
this.page = page;
setOutputMarkupId(true);
add(new Label("chc", "FE Channel Configuration"));
table = createTable(new FEConfigDataProvider());
add(table);
add(new Label("coc", "CC Properties"));
createCoCForm();
add(form);
}
private void createCoCForm() {
form = new Form("form");
form.add(new LabeledInputPanel("textfield2", "TF2", "TF2AsString", getConfigModel()));
form.add(createSaveButton());
}
Component createSaveButton() {
SubmitLink link = new SubmitLink("save-link", form) {
private static final long serialVersionUID = 304478671323141864L;
@Override
public void onSubmit() {
page.getModelObject();
........
}
};
return link;
}
private DataView createTable(FEDataProvider provider) {
DataView view = new DataView("table", provider, 10) {
private static final long serialVersionUID = -5704194525968729363L;
@Override
protected void populateItem(Item item) {
FEConfigEntry entry = (FEConfigEntry) item.getModelObject();
item.add(new Label("textfield1", entry.getTetfield1()));
......
}
};
view.setOutputMarkupId(true);
return view;
}
我试过调试。似乎modelobject在我的textfield#2数据删除之前包含相同的旧数据。
为什么?