JSP やサーブレットについて学んでいるときに、リダイレクトとディスパッチについて聞きました。ウィケットがsetResponsePage()
演じるのはどれ?
2 に答える
何setResponsePage
を行うかは、setResponsePage を呼び出す回数、呼び出す setResponsePage のバリアント、使用するレンダリング戦略など、いくつかの要因に依存します。
setResponsePage
リクエスト中に何度でも呼び出すことができます。Wicket は最後のものを使用して作業します。
setResponsePage には、Page
インスタンスとPage
クラスとPageParameters
. 後者は、ブックマーク可能な URL へのリダイレクトをブラウザに送信します。前者は、レンダリング戦略に応じて、次のいずれかになります。
- ONE_PASS_RENDER
- ページをブラウザに直接レンダリングする
- REDIRECT_TO_BUFFER
- ページをバッファにレンダリングする、ブラウザにリダイレクトを送信する (ブラウザはバッファリングされ、レンダリングされたマークアップを取得します)、または
- REDIRECT_TO_RENDER
- ブラウザにリダイレクトを送信し、ブラウザはページをレンダリングするリクエストを送信します
したがって、最初のオプションはディスパッチで、2 番目のオプションはディスパッチの後にリダイレクトが続き、3 番目のオプションはサーブレット用語でのリダイレクトになります。
setResponsePage(PageName.class) は、ブラウザーを必要な PageName にリダイレクトします。Page.class が指定されたパスにすでにマウントされていることを確認してください。たとえば、Application init メソッドでは、このようにマウントできます。 mountPage("/home.html", WelcomePage.class); 次に、他のページで、ホームページに移動する必要がある場合は、次のように呼び出します setResponsePage(WelcomePage.class);