Возможно ли иметь несколько actionListeners на командной кнопке?
Если нет, то есть ли способ обойти это?
Спасибо за вашу помощь!
Возможно ли иметь несколько actionListeners на командной кнопке?
Если нет, то есть ли способ обойти это?
Спасибо за вашу помощь!
Нет, вы можете добавить только два метода обратного вызова на стороне сервера:
actionListener
иaction
.<ice:commandButton action="#{bean.navigateTo}" actionListener="#{bean.doSomething}"/>
actionListener
должен указывать на общедоступный метод, который возвращает void
и принимает ActionEvent в качестве аргумента. Обычно он используется для любых задач, не связанных с какой-либо логикой навигации, и имеет то преимущество, что предоставляет вам старое и новое (= измененное) значение элемента управления. Это имеет особое значение в элементах управления вводом, таких как флажки.
action
должен указывать на общедоступный метод, который возвращает String
без каких-либо аргументов. Метод сделает все, что необходимо для навигации, например, дополнительную проверку (если она не была обработана каким-либо базовым валидатором JSF). Результат должен соответствовать правилам навигации из faces-config.xml
.
Это должно дать вам достаточно возможностей для обработки нескольких задач (что, как я полагаю, является вашей причиной наличия нескольких actionListener) в логике вашего сервера.
Кроме того, если вам нужно выполнить только некоторые задачи на стороне клиента, вы можете воспользоваться несколькими свойствами on* JavaScript.
Ссылка: Библиотека пользовательских компонентов ICEfaces