我想在点击链接并加载新页面后执行一个方法。我尝试了<action/>
tag,但这也无济于事:
<url-mapping id="myApp/seller/addProduct">
<pattern value="/myApp/seller/addProduct" />
<view-id value="/pages/seller/add_product.xhtml" />
<action onPostback="false">#{myBean.barMethod}</action>
<action>#{myBean.myMethod}</action>
</url-mapping>
@Bean
public class MyBean{
//source code omitted
public void myMehtod(){
//source code omitted
}
}
我尝试调试方法执行。加载页面后永远不会进行调用。 我该如何解决这个问题?
更新:经过几个小时调试此问题后,我得出的结果是第一个动作myBean.barMethod()
总是被执行而第二个myBean.myMethod()
从未被解雇,我不明白为什么? ?
答案 0 :(得分:0)
您无法使用pretty-config.xml直接将参数传递给操作方法,您需要将值绑定到bean属性,如下所示:
https://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams
<url-mapping id="viewItem">
<pattern value="/store/item/#{ iid : bean.itemId }/" />
<view-id value="/faces/shop/item.jsf" />
<action>#{bean.loadItem}</action>
</url-mapping>
此外,如果先前的操作方法调用了导航,则不会执行第一个以后的后续操作方法:
那就是说,如果你没有绑定URL中的值,为什么不在bean中调用一个不同的方法,或者获取另一种方式传递的值呢?
答案 1 :(得分:-1)
在1.2x及更高版本的JSF版本中,您可以在第一次呈现页面时调用bean方法上的@PostConstruct。
在您的情况下,将页面add_product.xhtml绑定到bean并使用@PostConstruct
修饰要调用的方法