Wicket では、RedirectToUrlException
、ResponsePage
で
リダイレクトがsetResponsePage
で
この2クラスの
前提. 使用している Wicket Version
- Wicket 7.5
<dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>7.5.0</version> </dependency>
そんなに
ソースは、
参考
wicket/RedirectToUrlException.java at master · apache/wicket
Inabaメモ: Wicketの
RedirectPage と jsessionid と IE の 相性に ついて・・・ (汗)
RedirectToUrlException
一言で
リダイレクトさせています。
- クラス図
Response Header をWebResponse
が
HTTP レスポンスコードにHttpServletResponse#sendredirect()
を
HTTP エラーコードをLocation
を
- RedirectRequestHandler#respond(final IRequestCycle requestCycle)
public void respond(final IRequestCycle requestCycle) { final String location; final String url = getRedirectUrl(); if (url.charAt(0) == '/') { // context-absolute url location = requestCycle.getUrlRenderer().renderContextRelativeUrl(url); } else { // if relative url, servlet container will translate to absolute as // per the servlet spec // if absolute url still do the same location = url; } WebResponse response = (WebResponse)requestCycle.getResponse(); if (status == HttpServletResponse.SC_MOVED_TEMPORARILY) { response.sendRedirect(location); } else { response.setStatus(status); response.setHeader("Location", location); } }
ResponsePage
一言で<meta http-equiv="refresh" content="0;URL=http://www.monotalk.xyz/">
のように、META REFRESH を用いた遷移方法になります。
WebPage
を継承したClassで、HTML側に、`
使い分け
基本的に、RedirectToUrlException
での
何らかのRedirectToUrlException
を
ResponsePage
を
[2] 例えば、
何らかの 理由で、 ResponsePage を 使う 場合の 注意点
METAタグの
ブラウザの
使用するRedirectToUrlException
でも、ResponsePage
も
詰む
[3] 上手く
Javascript の location.replace を 実行する ResponsePage を 作る
javascriptの
ソースは
location.replace だけだと、
`
以上です。
コメント