Подтвердить что ты не робот

Вызовите несколько методов поддержки bean одновременно

Есть ли способ вызова нескольких методов из другой поддержки beans в JSF?

У меня есть приложение, которое хранит информацию о пользователе. Я имею множественную поддержку beans, которые разбиты на расписание, адрес, телефон и т.д.

Когда приложение изначально загружает все, что находит, но поскольку все мои представления имеют тип @ViewScope, списки расписания, адреса, телефона сохраняются, даже если отображается новый пользователь.

Мне нужно вручную настроить расписание, адрес и списки телефонов на нуль, когда пользователь переходит от текущего пользователя, которого они просматривают. Мне нужно вызвать метод в каждом управляемом bean в один момент времени (когда пользователь нажимает на commandLink).

Можно ли вызвать несколько методов bean на одной командеLink?

4b9b3361

Ответ 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>