JSF中的响应对象

Akh*_*oes 6 jsf jsp response.redirect

我觉得这将是一个最短的答案将是一个问题:"这就是为什么JSF取代了JSP",但我会继续问问题.

问题:我想知道:我可以获取JSF页面的Response对象(如果有的话)?

为何奇怪?:我发现自己处于需要从JSF页面传递到JSP的情况,所以我想为什么不response.sendRedirect从一个从JSF页面调用的bean 重定向(with )然后......你可以看到它的标题.

我觉得这样可以用更干净的方式完成,但看不出怎么样!

编辑:在它上面,我还会询问哪种方式最适合重定向到JSF页面.

提前感谢您的建议.

Saz*_*man 9

好吧,如果你想要获得这个response物体,你可以JSF像下面那样拥有它!

HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Run Code Online (Sandbox Code Playgroud)

但是你真的不需要让response对象只能重定向到外面JSF.使用以下方法可以更轻松地完成此操作:

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
externalContext.redirect("http://www.example.com/myJspPage.jsp");
Run Code Online (Sandbox Code Playgroud)

编辑:

当您使用任何非动作方法时,您可以使用上述任何一种方法!但是当你使用任何动作方法时,正确JSF的重定向方式是:

public String goToOutsideAction(){
    ....
    return "/myPage.xhtml?faces-redirect=true"
}
Run Code Online (Sandbox Code Playgroud)

该方法应返回上下文相关视图ID,目标必须是JSF页面.

  • @Gloserio nope,它只会在JSP页面上生成一个GET请求. (2认同)