jsf Bean からのリクエスト転送で奇妙な問題が発生しています。リクエストは問題なく転送されています。URL への転送ページはブラウザーに正しく表示されますが、ページの下部には、jsf ページからの転送の結果も含まれています。
転送を行う前に、response.reset() を実行しようとしました。しかし、それはまだ機能していません。
Balus の便利な LifeCycleListner を使用して、何が起こっているかを確認します。以下は私が見るものです
- SystemOut O START PHASE RESTORE_VIEW(1)
- SystemOut O END PHASE RESTORE_VIEW(1)
- SystemOut O START PHASE RENDER_RESPONSE(6)
- SystemOut O 管理 Bean が Forward を実行中
- SystemOut O アプリへの転送中
- SystemOut O END PHASE RENDER_RESPONSE(6) => Render_reponse フレーズに戻る
Render_response フレーズに戻ると、転送先ページの最後に jsf ページが追加されると思います。
私の転送コードは次のようになります。
public void forwardHttpRequestTo(String url) {
try {
HttpServletRequest request = getHttpServletRequest();
HttpServletResponse response = getHttpServletRespose();
try {response.reset();} catch (Exception ex) {ex.printStackTrace();};
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);
}
catch (Exception ex) {
throw (RuntimeException) ex;
}
}
public HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
}
public HttpServletResponse getHttpServletRespose() {
return (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
}