这可能不是什么大问题,但我正在尝试优化我的应用。 它是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...
}