Wicket はどうにかして PageParameters オブジェクトで次の種類のパラメーターの両方を渡すことができますか? どうやらそうではありませんか?
accountId
URLに表示されます (/account/<ID>
)infoMessage
(ブックマーク可能な) URL に表示されないパラメーター
現在、問題のページに IndexedHybridUrlCodingStrategy を使用しており、パラメーター「0」と「infoMessage」を試すだけで次の例外が発生します。
WicketMessage: すべてのパラメーターがエンコードされたわけではありません。すべてのパラメーター名がゼロから始まる連続した整数であることを確認してください。現在のパラメータ名は次のとおりです: [0, infoMessage]
「infoMessage」パラメーター名を「1」に変更すると機能しますが、/account/42/Tosite%20108207%20tallennettiin.5
必要ではない醜い URL (この場合は のようなもの) が生成されます。
さて、おそらく明白な答えは、infoMessage が PageParameters にあってはならないということです。しかし、問題は、次のように、代わりに通常のコンストラクターパラメーターとして追加しようとしたことです:
public AccountPage(PageParameters parameters, String infoMessage) {
// ...
}
しかし、このアプローチは 1 つの重要なユース ケースで失敗します。アカウントに関連する永続的な「レコード」オブジェクトを削除した後、次のコマンドは 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 を部分的に使用すると問題が発生するのでしょうか?
ウィケット 1.4 を使用。