同时调用多个backing bean方法

时间:2011-02-16 18:22:54

标签: jsf jsf-2

有没有办法从JSF中的不同后台bean调用多个方法?

我有一个存储用户信息的应用程序。我有多个支持bean,分为计划,地址,电话等。

当应用程序最初加载时,所有工作都会找到,但由于我的所有视图都是@ViewScope类型,因此即使显示新用户,也会保留计划,地址,电话列表。

当用户离开他们正在查看的当前人时,我需要手动将日程表,地址和电话列表设置为null我需要在一个时间点调用每个托管bean中的方法(当用户时)点击commandLink)。

是否可以在一个commandLink上调用多个bean方法?

3 个答案:

答案 0 :(得分:31)

<h:commandLink action="#{jsfBean.submit}" value="execute multiple methods">
    <f:actionListener binding="#{jsfBean1.actionListener}"/>
    <f:actionListener binding="#{jsfBean2.actionListener}"/>
    <f:actionListener binding="#{jsfBean3.actionListener}"/>
</h:commandLink>

使用上面的代码,bean中的方法的('default')签名为actionListener(ActionEvent event)

首次单击commandLink时,将执行提交方法。之后所有其他actionListeners将逐个执行...希望有所帮助;)

答案 1 :(得分:2)

你可以让commandLink引用一个本身调用所有必要方法的方法。

答案 2 :(得分:0)

这里的答案对我来说很接近,但也必须在f:actionListener中为方法添加括号:

<h:commandLink action="#{jsfBean.submit}" value="execute multiple methods">
    <f:actionListener binding="#{jsfBean1.actionListener()}"/>
    <f:actionListener binding="#{jsfBean2.actionListener()}"/>
    <f:actionListener binding="#{jsfBean3.actionListener()}"/>
</h:commandLink>