Jsf 2 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()) {

我正在使用JSF2.0

我对预渲染视图有疑问

在我的豆子里,我有这样的方法

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

相关的:

谢谢。回答得好。现在我明白我们在用什么了;