0

jsf Bean からのリクエスト転送で奇妙な問題が発生しています。リクエストは問題なく転送されています。URL への転送ページはブラウザーに正しく表示されますが、ページの下部には、jsf ページからの転送の結果も含まれています。

転送を行う前に、response.reset() を実行しようとしました。しかし、それはまだ機能していません。

Balus の便利な LifeCycleListner を使用して、何が起こっているかを確認します。以下は私が見るものです

  1. SystemOut O START PHASE RESTORE_VIEW(1)
  2. SystemOut O END PHASE RESTORE_VIEW(1)
  3. SystemOut O START PHASE RENDER_RESPONSE(6)
  4. SystemOut O 管理 Bean が Forward を実行中
  5. SystemOut O アプリへの転送中
  6. 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();
}
4

0 に答える 0