Escolar Documentos
Profissional Documentos
Cultura Documentos
Topicos
Comparando action controllers com event listeners Action listeners Mudana de valores com listeners Usando JavaScript para enviar form
Browser incompatibilidade
Motivao
H duas variaes que iniciam evento
Eventos do processamento back-end Eventos que afetam somente o formato da interface do usurio interface
JSF categoriza cdigo que manipula essas aes como action controllers e event listeners
Action controllers manipula a submisso do form
Depois que o bean foi preenchido Retorna strings que afeta a navegao
- beans declared in managed-bean sect - mapping of return conditions declared in navigation-rule section
T GE
apresentao
Busines s Logic
result s
Choose JSP
forward
ValueChangeListener
No envia o form
Action Listeners
Customized J2EE Training: http://courses.coreservlets.com/
Servlets, JSP, Struts, JSF/MyFaces, Hibernate, Ajax, GWT, Java 5, Java 6, etc. Ruby/Rails coming soon. Developed and taught by well-known author and developer. At public venues or onsite at your location.
<h:commandButton actionListener="..."
3) Editar faces-config.xml
A) Declarar the bean B) Especificar navigation rules
Exemplo
<h:commandButton value="#{someBean.buttonLabel}" actionListener="#{someBean.doSideEffect}" immediate="true"/>
J2EE training: http://courses.coreservlets.com
Passo 4: resutados
Passo 4: resutados
Firefox, Netscape, and Operapercebem a mudana Internet Explorer s percebe depois que outro controle recebe o foco
Implementando ValueChangeListener
Listener est na classe do bean Tem um ValueChangeEvent como argumento
Metodos uteis do ValueChangeEvent
getComponent getOldValue getNewValue
Sample code
public void someMethod(ValueChangeEvent event) { boolean flag = ((Boolean)event.getNewValue()).booleanValue(); takeActionBasedOn(flag); } J2EE training: http://courses.coreservlets.com
3) Editar faces-config.xml
A) Declarar the bean B) Especificar navigation rules
Exemplo
<h:selectBooleanCheckbox valueChangeListener="#{resumeBean.changeColorMode}" onclick="submit()" immediate="true"/>
Client-side JavaScript code
Passo 2: Resultado
Passo 3-5
Iguais o exemplo anterior
Motivao
Normalmente, action listeners e action controllers so associados a botes diferentes As vezes, necessrio ambos
Listeners tem acesso a detalhes do GUI
Renderer, client ID, etc.
Mostra uma barra grayscale para o usuario Deixa ele clicar numa posio para escolher background Constri o valor RGB
le clientID.x valor Normaliza para 0-256 baseado na largura Gera uma saida em hex #RRGGBB string Vai pro action listener
3) Editar faces-config.xml
A) Declarar the bean B) Especificar navigation rules
Code
<h:form> ... <h:commandButton image="images/GrayBar.gif" actionListener="#{colorBean.selectGrayLevel}" action="#{colorBean.showPreview}"/>
Passo 2: Resultado
<faces-config> <navigation-rule> <from-view-id>/customize-bg.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id> /WEB-INF/results/show-preview2.jsp </to-view-id> </navigation-case> </navigation-rule> </faces-config>
J2EE training: http://courses.coreservlets.com
passo 4: Resultados
WEB-INF/results/show-preview2.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <f:view> <!DOCTYPE ...> <HTML> <HEAD><TITLE>Preview of Background Color</TITLE></HEAD> <BODY BGCOLOR="<h:outputText value="#{colorBean.bgColor}"/>"> <H1 ALIGN="CENTER">Preview of Background Color</H1> Experienced employee seeks challenging position doing something. <H2>Employment History</H2> Blah, blah, blah, blah. Yadda, yadda, yadda, yadda. </HTML> </f:view>
passo 4: Resultados
<f:view locale="#{formSettings.currentLocale}"> Na aula anterior, configuramo a lingua baseado no browser do usurio <f:view locale="#{facesContext.externalContext.request.locale} "> FacesContext.getCurrentInstance().getViewRoot() .setLocale(currentLocale);
I18N
Aula anterior
5050
Problema
Disparado quando a pgina recarregado No disparado aps executar um action listener (ou submeter um form) Disparado aps executar um action listener (ou submeter um form) No mostrado quando a pgina recarregada Locale volta para o Deafult
Soluo
Fazer ambos!
J2EE training: http://courses.coreservlets.com
5151
Exemplo
Idia
Prover um pushbutton para alternar entre ingls e espanhol Criar dois arquivos de propriedades
Abordagem
Diretamente setar o UIViewRoot Settar um flag que determina o que o getLocale retorna <f:view locale="#{formSettings.locale}">
J2EE training: http://courses.coreservlets.com
No f:view,
5252
5353
J2EE training: http://courses.coreservlets.com
O restante igual
Pginas de resultado
5656
J2EE training: http://courses.coreservlets.com
Resultado: Form
5858
Resultado: Sucesso
6060
perguntas?
Customized J2EE Training: http://courses.coreservlets.com/
Servlets, JSP, Struts, JSF/MyFaces, Hibernate, Ajax, GWT, Java 5, Java 6, etc. Ruby/Rails coming soon. Developed and taught by well-known author and developer. At public venues or onsite at your location.