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!