如何在Pretty-Faces中加载视图后执行方法

时间:2018-03-08 16:39:59

标签: jsf prettyfaces

我想在点击链接并加载新页面后执行一个方法。我尝试了<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()从未被解雇,我不明白为什么? ?

2 个答案:

答案 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>

此外,如果先前的操作方法调用了导航,则不会执行第一个以后的后续操作方法:

https://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.actions.navigation

那就是说,如果你没有绑定URL中的值,为什么不在bean中调用一个不同的方法,或者获取另一种方式传递的值呢?

答案 1 :(得分:-1)

在1.2x及更高版本的JSF版本中,您可以在第一次呈现页面时调用bean方法上的@PostConstruct。

在您的情况下,将页面add_product.xhtml绑定到bean并使用@PostConstruct

修饰要调用的方法