私がやろうとしているのは、オブジェクトのIDである 1 つのパラメーターを取得する単純なページです。
@MountPath("share/${share_id}")
public class IndexPage extends WebPage
{
public IndexPage(PageParameters parameters)
{
String id = parameters.get("share_id").toString();
// etc...
}
}
このページは、不正なアクセスから保護する必要があります。@AuthorizeInstantiation("user")アノテーションを追加し、 AuthenticatedWebApplicationを拡張するMainApplicationのgetSignInPageClass()を含む標準の Wicket セキュリティ サポートを管理しました。
問題は、元のパラメーターで承認した後、 IndexPageに戻る必要がある場合です。私はいくつかの解決策を得ましたが、それをよりエレガントでより一般的な (普遍的な) ものにする必要があります。
- Application クラスのrestartResponseAtSignInPage()メソッドをオーバーライドする
RequestCycleからパラメーターを取得します。
final Request request = RequestCycle.get().getRequest(); PageParametersEncoder encoder = new PageParametersEncoder(); PageParameters parameters = encoder.decodePageParameters(request.getUrl());
new RestartResponseAtInterceptPageException(getSignInPageClass(), newParameters);をスローしてそれらを渡します。
URLのパラメーターの正確なインデックスが何であるかを確認する必要があるため、これは良い解決策ではないことはわかっています(エンコーダーはnamedParametersではなくindexedParametersのみを返します-または、間違っていますか?)。
たぶん、以前にその問題に遭遇した人がいますか?