Вызовите несколько методов поддержки bean одновременно
Есть ли способ вызова нескольких методов из другой поддержки beans в JSF?
У меня есть приложение, которое хранит информацию о пользователе. Я имею множественную поддержку beans, которые разбиты на расписание, адрес, телефон и т.д.
Когда приложение изначально загружает все, что находит, но поскольку все мои представления имеют тип @ViewScope
, списки расписания, адреса, телефона сохраняются, даже если отображается новый пользователь.
Мне нужно вручную настроить расписание, адрес и списки телефонов на нуль, когда пользователь переходит от текущего пользователя, которого они просматривают. Мне нужно вызвать метод в каждом управляемом bean в один момент времени (когда пользователь нажимает на commandLink).
Можно ли вызвать несколько методов bean на одной командеLink?
Ответы
Ответ 1
<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>
Используя приведенный выше код, методы в beans имеют ('default') подпись actionListener(ActionEvent event)
когда вы сначала нажмете команду commandLink, будет выполнен метод отправки. После этого все остальные actionListeners будут выполняться один за другим... Надеюсь, что помогает;)
Ответ 2
У вас может быть ссылка на commandLink на один метод, который сам вызывает все необходимые методы.
Ответ 3
Ответы здесь были близки к работе для меня, но также должны были добавить скобки к методам в 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>