Pergunta

É possível ter vários listeners de ação em um botão de comando?

Se não existe alguma maneira de contornar isso?

Obrigado pela ajuda!

Foi útil?

Solução

Não, você só pode adicionar dois métodos de retorno de chamada do servidor:

  • actionListener e
  • action.

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

actionListener tem que apontar para um método público que retorna void e toma uma ação como argumento. Geralmente é usado para quaisquer tarefas que não estejam relacionadas a nenhuma lógica de navegação e têm vantagem, para fornecer o valor antigo e novo (= alterado) do controle. Isso faz sentido em controles de entrada, como caixas de seleção.

action tem que apontar para um método público que retorna um String sem causar nenhum argumento. O método fará tudo o que é necessário para navegar - por exemplo, validação adicional (se não tiver sido tratado por algum validador básico do JSF). O resultado deve corresponder às regras de navegação de faces-config.xml.

Isso deve oferecer possibilidades suficientes para lidar com várias tarefas (o que eu presumo que é o seu motivo para ter várias listener de ação) na lógica do seu servidor.

Além disso, se você precisar executar apenas algumas tarefas do lado do cliente, poderá tirar proveito de várias propriedades* JavaScript.

Referência: Componentes personalizados de icefaces

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top