WicketはPageParametersオブジェクトに次の種類のパラメータを両方とも渡すことができますか?どうやらないのですか? がURLにを示しているPageParametersの使用中にWicketページに情報メッセージを渡す
accountId
(/account/<ID>
)infoMessage
あるパラメータない私は、現在のページのIndexedHybridUrlCodingStrategyを使用しています(ブックマーク)URL
に示す 0 "と" infoMessage "のパラメータを試してみると、この例外が発生します:
WicketMessage:すべてのパラメータがエンコードされているわけではありません。すべての パラメータ名が0から始まる順番に整数であることを確認してください。 現在のパラメータ名は次のとおりです:[0、infoMessage]
私は「1」に「infoMessage」パラメータ名を変更した場合、それは動作しますが、(この場合は/account/42/Tosite%20108207%20tallennettiin.5
のようなもの)醜いURLを生成するものではありませんいますが欲しいです。今
、明白な答えは、おそらくinfoMessageがPageParametersであってはならないということです。しかし、事はある、私はそうのように、代わりに通常のコンストラクタのパラメータとして、それを追加してみました:
public AccountPage(PageParameters parameters, String infoMessage) {
// ...
}
しかし、このアプローチは、一つの重要なユースケースには失敗します。アカウントに関連する永続的な "レコード"オブジェクトを削除した後、ではなく、はAccountPageを正しく読み込みます(削除されたレコードは引き続き表示されます)。このコードは、AjaxFallbackLinkのonClick()で実行されます。一方
setResponsePage(new AccountPage(AccountPage.pageParameters(account), message));
、私の独創的なアプローチ...
setResponsePage(AccountPage.class, AccountPage.pageParameters(account));
は...再び、それは何らかの形で "より徹底的に" AccountPageをロードして、正常に動作します、しかし、私はしないでくださいinfoMessageパラメータをきれいに渡す方法を知っている。
(上記AccountPage.pageParameters()
が「0」=アカウントIDを有する適切なPageParametersを作成するための単純な静的なユーティリティである。AccountPageコンストラクタは常にIDを使用して永続性のアカウントをロードする。)
任意のアイデア?おそらく、AjaxFallbackLinkを使用すると部分的に問題が起こるでしょうか?
Wicket 1.4を使用しています。
はい、これはまさに私がやろうとしていたものでした。ありがとう! getSession()。info()で保存されたメッセージが、ターゲットページのフィードバックパネルによって自動的に取得されることをうれしく思います。 – Jonik