托管bean构造函数调用两次

时间:2011-10-20 22:26:47

标签: jsf-2

这可能不是什么大问题,但我正在尝试优化我的应用。 它是js6应用程序与jsf2.0框架,primefaces2.1和glassfish3.1。

我有点在命令链接上的情况我必须在服务器端执行smth,然后使用一些get参数重定向到另一个页面。 我用p:commandLink和嵌套的f:param解决了这个问题。 Action返回字符串wihch是导航结果到faces-context中定义的另一个页面,带有redirect和include-view-params =“true”。 一切正常。但是,当我查看跟踪时,我看到在呈现目标页面(第二页)后,托管bean的构造函数被调用了两次。所以托管bean从数据库中加载了一些数据,这是我想要放弃的

代码:

1页:

...
<p:commandLink value="Go to page2" action="#{bean1.doSmthBefore}">
<f:param name="param1" value="1"/>
</p:commandLink>
...

bean1:

@ManagedBean
@ViewScoped
public class Bean1{
    public void doSmthBefore(){
        ....
        return "page2";
    }
}

第2页:

...
<f:metadata>
<f:viewParam name="param1" value="#{bean2.param1}"/>
</f:metadata>
...

bean2:

@ManagedBean
@ViewScoped
public class Bean2{
   String param1;
   public Bean2(){
      sout("Constructor") //<-trace
   }
   //geters seters...
}

0 个答案:

没有答案