Facebook などのサービスを使用した認証では、Facebook にリダイレクトし、Facebook が認証を行ってからリダイレクトします。リダイレクトが完了すると、コードが実行されて何らかの処理が行われ、応答ページが表示されます。どの応答ページが表示されるかは、さまざまな要因によって異なります。
現在行っていることは次のとおりです。
class RedirectTargetPage extends WebPage {
@Override public void onBeforeRender() {
String getParam = getRequest().getQueryParameters()
.getParamterValue("get-param");
......
if (...) setResponsePage(PageOne.class);
else if (...) setResposnePage(PageTwo.class);
else ... // etc
}
}
次にurlFor(Class<Page>)
、このページへの URL を検索し、それを Facebook に渡します。認証後、Facebook は私たちにリダイレクトします。すべて正常に機能します。
しかし、これは本当にページではありませんか?つまり、URL の背後にある単なるコードであり、最後にsetResponsePage
. 私が書いていたのはリクエストを処理するものにすぎないように思えました。代わりに を作成して、次のようなものIRequestHandler
を使用して URL を取得できるように思えました。urlFor(IRequestHandler)
class RedirectTarget implements IRequestHandler {
@Override public void respond(IRequestCycle requestCycle) {
String getParam = requestCycle.getRequest().getQueryParameters()
.getParameterValue("get-param");
....
if (...) requestCycle.setResposnePage(..)
}
}
悲しいかな、おurlFor(new RedirectTarget())
届けしnull
ます!何がうまくいかないのですか?私に何ができる?オーバーライドonBeforeReder
は機能しますが、エレガントに見えません....