Icefaces: несколько прослушивателей действий для командной кнопки

Возможно ли иметь несколько actionListeners на командной кнопке?

Если нет, то есть ли способ обойти это?

Спасибо за вашу помощь!


person damien535    schedule 24.08.2009    source источник


Ответы (1)


Нет, вы можете добавить только два метода обратного вызова на стороне сервера:

  • actionListener и
  • action.

<ice:commandButton action="#{bean.navigateTo}" actionListener="#{bean.doSomething}"/>

actionListener должен указывать на общедоступный метод, который возвращает void и принимает ActionEvent в качестве аргумента. Обычно он используется для любых задач, не связанных с какой-либо логикой навигации, и имеет то преимущество, что предоставляет вам старое и новое (= измененное) значение элемента управления. Это имеет особое значение в элементах управления вводом, таких как флажки.

action должен указывать на общедоступный метод, который возвращает String без каких-либо аргументов. Метод сделает все, что необходимо для навигации, например, дополнительную проверку (если она не была обработана каким-либо базовым валидатором JSF). Результат должен соответствовать правилам навигации из faces-config.xml.

Это должно дать вам достаточно возможностей для обработки нескольких задач (что, как я полагаю, является вашей причиной наличия нескольких actionListener) в логике вашего сервера.

Кроме того, если вам нужно выполнить только некоторые задачи на стороне клиента, вы можете воспользоваться несколькими свойствами on* JavaScript.

Ссылка: Библиотека пользовательских компонентов ICEfaces

person Gerhard Dinhof    schedule 27.08.2009