Escolar Documentos
Profissional Documentos
Cultura Documentos
Ciclo de vida de uma requisio JSF Otimizar requisies AJAX e atualizaes parciais de pginas Tudo funcionando em uma nica pgina E Facelets, vai me servir para algo? Integrando JSF e ExtJs, em busca de uma abordagem flexvel
Request
Response
Invoke bean Invoke method(s) Application Compute navigation Call bean getters to Render populate Response components
| Depurando o ciclo
A primeira chamada Refresh Submetendo o form Adiciona immediate=true para UIInput somente Adiciona immediate=true para UICommand somente Adiciona immediate=true para UIInput e UICommand Erro de converso Erro de validao
| Depurando o ciclo
A primeira chamada 1. Restore view 2. Apply request values * 3. Process validations * 4. Update model values * 5. Invoke application * 6. Render response
Os componentes so criados pela primeira vez e armazenados na UIViewRoot e so setados os component bindings.
| Depurando o ciclo
Refresh 1. Restore view 2. Apply request values * 3. Process validations * 4. Update model values * 5. Invoke application * 6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean, se eles no foram setados ento o valor default ser null
| Depurando o ciclo
3. Process validations
Os valores so recuperados como objetos dos componentes atravs do mtodo getAsObject() do converter e validados pelo validator. Finalmente o valueChangeListener invocado
[...]
| Depurando o ciclo
5. Invoke application
O processamento real da submisso do form acontece aqui
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean, se um converter definido ento o valor ser obtido atravs do mtodo getAsString() do converter e o valor ser exibido no form
| Depurando o ciclo
Os valores so recuperados atravs do mtodo getAsObject() do converter, validados pelo validator e o valueChangeListener invocado. Da os valores convertidos e validados so setados nos componentes relevantes no UIViewRoot. Isso acontece aqui invs da fase Process validations devido ao immediate=true no h:inputText
3. Process validations
Nada aqui. A converso e validao j foram processadas na fase anterior antes de os valores serem setados nos componentes
[...]
| Depurando o ciclo
5. Invoke application
O processamento real da submisso do form acontece aqui
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean, se um converter definido ento o valor ser obtido atravs do mtodo getAsString() do converter e o valor ser exibido no form
| Depurando o ciclo
O processamento real da submisso do form acontece aqui. Isso acontece nesta fase invs da fase Invoke application devido ao immediate=true no h:commandButton. Os componentes UIInput que no possuem immediate=true setado sero ignorados, e portanto, eles no sero convertidos nem validados
3. Process validations
Esta fase pulada devido ao immediate=true no
h:commandButton [...]
| Depurando o ciclo
5. Invoke application
Esta fase pulada devido ao immediate=true no
h:commandButton
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean. Ateno: Como a fase Update model values pulada os value bindings no so setados e o getters dos value bindings retornaro null. Os componentes UIInput que no possuem immediate=true setado sero ignorados e no ser possvel recuperar os valores do componente ou value binding.
| Depurando o ciclo
3. Process validations
[...]
| Depurando o ciclo
Adiciona immediate=true para UIInput e UICommand 4. Update model values 5. Invoke application
Esta fase pulada devido ao immediate=true no h:commandButton Esta fase pulada devido ao immediate=true no h:commandButton
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean. Ateno: Como a fase Update model values pulada os value bindings no so setados e o getters dos value bindings retornaro null. Mas os valores ainda esto avaliados por component bindings que foram setados na fase Apply request values, assim voc poder recuperar o valor do input com inputBinding.getValue() no mtodo action(). O novo valor do input ser tambm avaliado pelo ValueChangeEvent no mtodo inputChanged()
| Depurando o ciclo
3. Process validations
Os valores so recuperados como objetos dos componentes atravs do mtodo getAsObject() do converter onde um ConverterException lanado. O validator e o valueChangeListener so pulados. O ciclo de vida pular imediatamente para a fase Render response
[...]
| Depurando o ciclo
5. Invoke application
Esta fase pulada devido ao ConverterException
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean, explicitando os valores para qual os ConverterException tem ocorrido
| Depurando o ciclo
3. Process validations
Os valores so recuperados como objetos dos componentes atravs do mtodo getAsObject() do converter e validados pelo validator, onde um ValidatorException lanado. O valueChangeListener pulado. O ciclo de vida pular imediatamente para a fase Render response
[...]
| Depurando o ciclo
5. Invoke application
Esta fase pulada devido ao ValidatorException
6. Render response
Os valores serem exibidos so recuperados atravs dos getters no managed bean, explicitando os valores para qual os ValidatorException tem ocorrido
| Richfaces?
Projeto da JBoss Insere funcionalidades AJAX em aplicaes JSF existentes J inclui Ajax4jsf, claro! Excelente compatibilidade com diversos conjuntos de componentes Possui diversos componentes ricos
| Richfaces?
| Richfaces?
Ajax4jsf
| Ajax4jsf?
Antes de enviar uma requisio AJAX..
| Ajax4jsf?
Limitando regies com a4j:region Diminuindo o trafgo na rede com eventsQueue e requestDelay ajaxSingle=true, o lobo solitrio Ningum gosta de esperar, mas com a4j:status as coisas at melhoram
| Ajax4jsf?
Antes de enviar uma requisio AJAX..
| Ajax4jsf?
Otimizando o atributo reRender Limitando-se a regio, renderRegionOnly=true e selfRendered=true Limitando a lista de id's tambm ajuda, limitToList=true Definindo reas atualizavis, a4j:outputPanel
| nica pgina?
Menos configuraes para regras de navegao Menos arquivos (jsp, xhtml) para manuteno Renderizao mais rpida Menos overhead no servidor Sem reload de pgina, lgico!
| Facelets?
Desenvolvido especialmente para JSF Rpido templating de componentes e pginas De 30% 50% mais rpido que JSP No est preso a Web Container JBoss Seam usa e abusa
| Facelets?
Compatvel com JSF 1.1 e JSF 1.2 Excelente depurao de erros Ser integrado ao JSF 2.0 Utiliza-se de XHTML nas pginas (alguns seres no gostam disso o.O) Compatvel com a maioria (se no todos) os conjuntos de componentes
| Facelets?
| Facelets?