Is there a way to call multiple methods from different backing beans in JSF?
I have an application that stores user information. I have multiple backing beans which are broken down into schedule, address, phone.. etc.
When the application initially loads everything works find but since all of my views are of type @ViewScope
the lists of schedule, address, phone are maintained even if a new user is displayed.
I need to manually set the schedule, address, and phone lists to null when the user navigates away from the current person they are viewing IE I need to call a method in each managed bean at one point in time (When the user clicks on a comman开发者_Go百科dLink).
Is it possible to call multiple bean methods on one commandLink?
<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>
Using the above code, with methods in the beans have the ('default') signature of actionListener(ActionEvent event)
when you click the commandLink first the submit method will be executed. After that all the other actionListeners will be executed one by one...Hope that helps ;)
You can have your commandLink reference one method which itself calls all the necessary methods.
The answers here were close to working for me but also had to add parenthesis to the methods in the 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>
精彩评论