有没有办法从JSF中的不同后台bean调用多个方法?
我有一个存储用户信息的应用程序。我有多个支持bean,分为计划,地址,电话等。
当应用程序最初加载时,所有工作都会找到,但由于我的所有视图都是@ViewScope
类型,因此即使显示新用户,也会保留计划,地址,电话列表。
当用户离开他们正在查看的当前人时,我需要手动将日程表,地址和电话列表设置为null我需要在一个时间点调用每个托管bean中的方法(当用户时)点击commandLink)。
是否可以在一个commandLink上调用多个bean方法?
答案 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>