0

我有一个表单和返回按钮的新问题。

采取这种形式:

public SearchSomethingForm() {
super(ORSAWebConstants.FORM);
setModel(new CompoundPropertyModel<Void>(this));

add(section01Panel);
add(section02Panel);
add(section03Panel);
add(new SubmitButton());

}

如您所见,我没有基于单个对象的属性模型。

在表单中,我只添加了一些面板,里面有一些 INPUT。例如:

private String name;
protected void onInitialize() {
 super.onInitialize();
 final TextField<String> foo = new TextField<String> ("name",new PropertyModel<String>(this,"name"));
 add (foo);
}

每个面板代码都有类似的东西。一些带有 BIND 的输入到本地属性。

然后在 FORM SUBMIT 中,我可以读取值

section01Panel.getName();

问题

表单提交后,我打开一个带有结果的新页面。我想要一个返回按钮到表单的页面,每个预先输入的字段都已经编译,因此用户只需更改表单的一部分即可进行新的搜索。

如果没有特定的 PropertyModel,我就无法编译对象,并将其属性映射到表单字段上。表单不知道将添加哪种 FIELD。

我该如何解决这个问题?

4

1 回答 1

0

经过一些测试,我发现 Wicket 可以从页面传递整个页面,所以当我调用新页面时,我传递了表单页面:

SheetPage page = new SheetPage("SheetPage", idPojo,FormPage.this);
setResponsePage(page);

在 SheetPage 中,我将有一个指向上一页的链接:

public SheetPage(String title, String idPojo, final FormPage fPage) {
    Link back = new Link("back"){
       private static final long serialVersionUID = 1L;

       public void onClick() {
         setResponsePage(fPage);
      };
    };
}

当我返回 FormPage 时,我会发现该页面与打开表单页面之前完全一样,并且表单已完全预编译。惊人的!

于 2012-06-01T13:50:09.173 回答