Wicket:表单问题 - modelObject没有得到更新

时间:2013-11-25 15:40:30

标签: forms model wicket

我有一个包含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数据删除之前包含相同的旧数据。

为什么?

0 个答案:

没有答案