0

从 jsf bean 转发请求有一个奇怪的问题。请求正在转发,没有任何问题。转发到 url 页面在浏览器中正确显示,只是在页面底部,它还包含从 jsf 页面转发的结果。

在进行转发之前,我尝试过执行 response.reset() 。但它仍然无法正常工作。

我使用 Balus 方便的 LifeCycleListner 来查看发生了什么。下面是我看到的

  1. SystemOut O 开始阶段 RESTORE_VIEW(1)
  2. SystemOut O END PHASE RESTORE_VIEW(1)
  3. SystemOut O 开始阶段 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