Jsf 2 Jsf2.0预渲染视图
我正在使用JSF2.0 我对预渲染视图有疑问 在我的豆子里,我有这样的方法Jsf 2 Jsf2.0预渲染视图,jsf-2,Jsf 2,我正在使用JSF2.0 我对预渲染视图有疑问 在我的豆子里,我有这样的方法 public void init() throws Exception { FacesContext.getCurrentInstance().getExternalContext().redirect("/To My Page"); if(!FacesContext.getCurrentInstance().isPostback()) {
public void init() throws Exception
{
FacesContext.getCurrentInstance().getExternalContext().redirect("/To My Page");
if(!FacesContext.getCurrentInstance().isPostback())
{
System.out.println("Kshitij");
}
}
当此方法执行时,它还在servler日志中打印“Kshitij”
然后重定向到第页
为什么??我认为它必须先重定向到页面。为什么您认为实际的重定向是先执行的?在服务器继续控制请求/响应之前,该方法必须首先完成运行。在全新的请求和线程中,不可能中途暂停代码执行,然后在完全相同的位置继续执行代码
redirect()
调用基本上设置Location
响应头。只有当方法返回时,服务器才会发送响应,然后浏览器才会在该位置发送新请求
如果要在需要重定向时跳过打印,请添加return语句或if/else
if (youNeedToRedirect) {
FacesContext.getCurrentInstance().getExternalContext().redirect("/To My Page");
}
else {
if (!FacesContext.getCurrentInstance().isPostback()) {
System.out.println("Kshitij");
}
}
这一切都与JSF或preRenderView
无关。这些都只是基本的Java和HTTP
相关的: