0

フォームと戻るボタンに新しい問題があります。

この種のフォームを取ります:

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

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

}

ご覧のとおり、単一のオブジェクトに基づくプロパティモデルはありません。

フォーム内には、入力を含むパネルのみを追加します。例えば:

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

すべてのPanelコードにはそのようなものがあります。ローカルプロパティへのBINDを使用した入力。

次に、FORM SUBMITで、次の値を読み取ることができます。

section01Panel.getName();

問題

フォームを送信した後、新しいページを開いて結果を表示します。事前に入力されたすべてのフィールドがすでにコンパイルされているフォームのページに戻るボタンが必要なので、ユーザーはフォームの一部を変更するだけで新しい検索を行うことができます。

特定のPropertyModelがないと、フォームフィールドにプロパティがマップされたオブジェクトをコンパイルできません。フォームは、どの種類のフィールドが追加されるかを知りません。

どうすればこれを解決できますか?

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 に答える