Engenharia de Aplicações – Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2 Mestrado em Informática – Universidade do Minho! 31! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Java Server Faces (JSF) JSP – uma tecnologia" JSF – uma framework MVC(-like)" - JSP para a apresentação (ou não)" - Java Beans para o modelo" - utilização da JSF API! Faces servlet faz o controlo" utilização da JSF tag library! Configurado via (faces-config.xml e web.xml – JSF 1.x)" Aplicações JSF correm num web container (e.g. Apache Tomcat)" Mestrado em Informática – Universidade do Minho! 32! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: MVC Mestrado em Informática – Universidade do Minho! 33! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF – Principais características Componentes de UI stateful! Gestão de Beans (Bean management)" Especificação da navegação entre páginas" Validação de dados (input)" Conversão de dados (input <-> modelo)" Tratamento de erros" Processamento de eventos (Event handling)" Suporte à internacionalização (localization)" Mestrado em Informática – Universidade do Minho! 34! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Ola Mundo em JSF Mestrado em Informática – Universidade do Minho! 35! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Olá mundo em JSF – bean Mestrado em Informática – Universidade do Minho! 36! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: backing beans Uma app JSF tipica tem um ou mais backing bean! - Propriedades são associadas" - ao valor do componente (valor guardado no componente)" - à instância do componente (valor guardado no bean)" Métodos" - - - JavaBeans associados ao componentes de IU da página" validação" tratamento de eventos" navegação" Utiliza-se a JavaServer Faces expression language (EL) #{…} " Mestrado em Informática – Universidade do Minho! 37! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Instance- vs. value-binding Instance-binding! - o backing bean pode modificar o componente" - o backing bean pode instanciar componentes " Value-binding" - maior separação entre modelo e vista" - a página tem mais controlo sobre o componente" - o backing bean não depende da API JSF" - conversões feitas automaticamente pela framework" Tipicamente utiliza-se value-binding! Mestrado em Informática – Universidade do Minho! 38! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Olá mundo em JSF – JSP Tags" Beans" Validators" Mestrado em Informática – Universidade do Minho! 39! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Olá mundo em JSF – Managed beans faces-config.xml" - criação centralizada de beans" - configuração das propriedades" Mestrado em Informática – Universidade do Minho! 40! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: managed Beans managed-bean-name – nome do bean no scope! managed-bean-scope – scope em que o bean será guardado (none, request, session, application) "" - se bean referido numa binding tag deve usar-se request" managed-bean-class – classe do bean" managed-property – property-name / property-class / value" Mestrado em Informática – Universidade do Minho! 41! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: core tag library uri: http://java.sun.com/jsf/core" doc: http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/" Mestrado em Informática – Universidade do Minho! 42! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: standard HTML tag library uri: http://java.sun.com/jsf/html" Mestrado em Informática – Universidade do Minho! 43! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Tags Mestrado em Informática – Universidade do Minho! 44! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Olá mundo em JSF – Validação faces-config.xml v2" Mestrado em Informática – Universidade do Minho! 45! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Olá mundo em JSF – NameValidator Mestrado em Informática – Universidade do Minho! 46! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: Validação (4+1) componentes built-in! - ao nível da app" - implementam a interface Validator" métodos de validação (nos backing beans)" - feita ao nível da lógica de negócio" componentes custom" - DoubleRangeValidator; LongRangeValidator; LengthValidator" métodos devem respeitar assinatura do método validate da interface Validator " atributo required" - impedem valores nulos" Mestrado em Informática – Universidade do Minho! 47! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Validação ao nível da app prós" - fácil implementação" - sem necessidade de uma classe extra (c.f. custom)" - sem necessidade de especificação na página" contras" - reutilização" - manutenção" - acontece após as outras" Mestrado em Informática – Universidade do Minho! 48! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: processamento de resquests Mestrado em Informática – Universidade do Minho! 49! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: Navegação Mestrado em Informática – Universidade do Minho! 50! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: Navegação Mestrado em Informática – Universidade do Minho! 51! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: Regras de navegação Mestrado em Informática – Universidade do Minho! 52! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: Regras de nevegação regras default! pattern matching! from-action" Mestrado em Informática – Universidade do Minho! 53! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Vantagens de JavaServer Faces Widgets mais poderosos (GUI controls)" Gestão de Eventos" Managed Beans! EL – Expression Language! Conversão e validação de inputs! Configuração centralizada" Encoraja MVC (consistência!)" Mestrado em Informática – Universidade do Minho! 54! Engenharia de Aplicações – Sistemas Interactivos 2009/10! Desvantagens de JavaServer Faces Curva de aprendizagem" - projectos pequenos; prazos curtos, programadores inexperientes" Documentação (inferior a JSP)" Maior opacidade na execução" - Suporte ao desenvolvimento " - debug; optimizações" comparado com JSP" Rigidez da abordagem" MVC!" Mestrado em Informática – Universidade do Minho! 55! Engenharia de Aplicações – Sistemas Interactivos 2009/10! JSF: links úteis Tag library" - API" - http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/api/" Documentation" - http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/" http://java.sun.com/javaee/javaserverfaces/reference/docs/" Quick tutorial (with Eclipse)" - http://www.vogella.de/articles/JavaServerFaces/article.html" Mestrado em Informática – Universidade do Minho! 56!