Sunteți pe pagina 1din 13

Java Server Faces

Eventos

Prof. Rodrigo Henrique Cunha Palácios


rodrigopalacios@utfpr.edu.br
Slides fornecidos pelo professor Prof. Edson Shozo Nishi
Eventos
 Comparando action controllers com event
listeners
 Action listeners
 Value change listeners
 Usando JavaScript para submeter forms
 Incompatibilidade de navegadores
 Combinando action listeners e action controllers
no mesmo elemento de interface
Motivação
 Existem dois tipos de eventos de interface
 Eventos que iniciam processamento no
servidor (back-end)
 Eventos que afetam somente a forma e
formato da interface
 JSF categoriza código que trata isso como
action controllers e event listeners
Motivação
 Action
controllers manipulam submissão do
formulário
 Acionados depois dos beans serem populados
 Acionados depois da lógica de validação
 Retorna uma string que afeta diretamente a
navegação das páginas
 Event listeners manipulam eventos de
interface
 Frequentemente acionados antes do bean se
populado
 Frequentemente não passam pela lógica de
validação
 Nunca afetam a navegação de páginas
Tipos de event listeners
 ActionListener
 Disparados por botões de submit, image maps e
hypertext links com JavaScript
 <h:commandButton value=”...” .../>
 <h:commandButton image=”...” .../>
 <h:commandLink .../>
 Automaticamente submetem o form
 ValueChangeListener
 Disparados por combo boxes, check boxes, radio
buttons, textfields, e outros
 <h:selectOneMenu .../>
 <h:selectBooleanCheckbox .../>
 <h:selectOneRadio .../>
 <h:inputText .../>
 Não submetem automaticamente o form
Usando ActionListeners em JSP
 Alguns botões submetem o form e iniciam
processamento em backend
 Use <h:commandButton action=”...” .../>
 Outros botões afetam somente a interface
 Use <h:commandButton actionListener=”...” .../>
 Você usualmente quer que isto ocorra antes dos beans
serem populados e especialmente antes da validação
 Desde que forms estão frequentemente incompletos quando a interface
é ajustada
 Use “immediate” para designar que o listener dispare
antes dos beans serem populados ou validação ser
executada
 <h:commandButton actionListener=”...” immediate=”true” .../>
Implementando o ActionListener
em Java
 Listener está usualmente no form bean
 Recebe um ActionEvent como argumento
 Sem tipo de retorno (void)
 ActionEvent em javax.faces.event
 ActionEvent possui o método getComponent
que dá acesso a uma referência do
componente
public void algumMetodo(ActionEvent evt) {
// faz alguma coisa
}
Exemplo: Desabilitar controles
na interface
 Cada controle possui uma propriedade
“disabled” que é false por default
 Usar um botão com um ActionListener
atachado para desabilitar ou reabilitar
certos controles
Exemplo: Desabilitar controles
na interface
 Exemplo específico:
 Botão para mostrar ou não comboboxes para
área da empresa em uma tela de login
<h:selectOneMenu value=“...”
disabled=“...” ...>
<f:selectItems value=“...” />
</h:selectOneMenu>
 Valor para f:selectItems deve ser uma array
de SelectItem
Exemplo: Desabilitar controles
na interface
 No bean
 Arraycom os valores a serem incluídos no
controle
 Classe SelectItem
 new SelectItem(“Valor”);

 Método get que retorna a array


 Na página
 <h:commandButton
actionListener=“#{bean.alterar}”
immediate=“true”/>
ValueChangeListener
 Anexado a combobox, listbox, radio
button, checkbox, textfield, etc
 Form não submetido automaticamente
 Adicionar onclick=“submit()” ou
onchange=“submit()”
 Incompatibilidade entre navegadores
 Mozilla e Opera disparam eventos quando a
alteração ocorre
 IE dispara após outro controle receber o foco
ValueChangeListener
 Recebe ValueChangeEvent como
argumento
 publicvoid fazAlgo(ValueChangeEvent
evento)
 getComponent
 getOldValue
 getNewValue
Dúvidas?

S-ar putea să vă placă și