Sie sind auf Seite 1von 138

!

"#"$%&'()*$&
+,()*$-./"0%12(/&
3$4$)5(%50/$)*(&6$7&2(/&
!"#"$%&#%&'(")%*'
uesenvolvlmenLo com !avaServer laces 2
ntroduo
uesenvolvlmenLo com !avaServer laces 3
Apresentao
O aperto de mo, como cumprimento
de amizade, teve sua origem na dade
Mdia. Segundo consta, antes do
incio de um duelo de espadas, os
adversrios, por exigncia do
regulamento, eram obrigados a fazer
uma saudao (que consistia num
abrao) para que pudessem comear
luta. Temendo que o abrao inicial
se transformasse num golpe
traioeiro, os contendores resolveram
transformar o abrao num aperto de
mo. O hbito generalizou-se primeiro
na nglaterra, depois na Europa e
difundiu-se ento pelo resto do mundo
(em algumas culturas).
lonLe: hLLp://candlmba.blogspoL.com/
uesenvolvlmenLo com !avaServer laces 4
Programa
!
O que JSF -
conhecendo a tecnologia
!
Configurando a
aplicao, "Hello World!
!
Escrevendo managed
beans
!
Um pouco de teoria
!
JSF Expression
Language
!
Navegao
!
Modelo de componentes
!
nternacionalizao
!
Adicionando suporte
AJAX
uesenvolvlmenLo com !avaServer laces 5
Ambiente do curso
!
JDK 6.0
!
Eclipse 3.4 (Ganymede)
!
Tomcat 6.x
uesenvolvlmenLo com !avaServer laces 6
ntroduo
!
Aplicaes web tornam-se mais e mais
importantes no nosso mercado
!
Quanta complexidade para desenvolver
aplicaes web
!
Java script
!
CSS
!
Ajax
!
validao (cliente e servidor)
!
efeitos, usabilidade etc
uesenvolvlmenLo com !avaServer laces 7
ntroduo
!
Exigncia mais elevada dos clientes
durante os anos
!
nterfaces mais ricas e complexas
!
Prazos cada vez mais curtos
!
Hoje temos diversos frameworks para
desenvolvimento web ...
!
... E a cada ano surgem novos
frameworks ...
uesenvolvlmenLo com !avaServer laces 8
ntroduo
!
... Muitos deles so excelentes, com
potencial, de fcil desenvolvimento e
trazendo uma boa produtividade ...
!
... Porm ainda assim no so absorvidos
pelo mercado como gostaramos ou
mesmo como deveriam
!
Hoje estamos rodeados de escolhas,
muitas por sinal ...
uesenvolvlmenLo com !avaServer laces 9
ntroduo
!
Mas j passamos por pocas piores
uesenvolvlmenLo com !avaServer laces 10
ntroduo
!
Lembram do Model 1?
uesenvolvlmenLo com !avaServer laces 11
ntroduo
!
Onde tudo era centrado em pginas?
uesenvolvlmenLo com !avaServer laces 12
ntroduo
!
O desenvolvimento melhorou com o
Model 2 (MVC)
uesenvolvlmenLo com !avaServer laces 13
ntroduo
!
... Trazendo consigo diversos frameworks
MVC baseado no Model 2
!
Struts 1.x
!
WebWork (aka Struts 2.x)
!
Spring MVC
!
Tapestry
!
E muitos outros ...
!
E continuam surgindo mais
uesenvolvlmenLo com !avaServer laces 14
ntroduo
!
Ainda assim continuamos com alguns
problemas
!
A plataforma Java no nos fornecia recursos
para desenvolver aplicaes web com
produtividade
!
Tnhamos dificuldade para integrar diversos
frameworks
!
Falta de padro para um framework web na
plataforma Java
!
Ausncia de uma AP padro para construir
componentes web Java
uesenvolvlmenLo com !avaServer laces 15
ntroduo
!
E a soluo foi?
!
JavaServer Faces (JSF)
uesenvolvlmenLo com !avaServer laces 16
Mas o que
JavaServer Faces?
uesenvolvlmenLo com !avaServer laces 17
C que e !avaServer laces?
!
...uma especificao
!
...um framework MVC
!
...um framework baseado em
componentes de interface com o usurio
!
...um framework dirigido a eventos
!
...padro de mercado
!
...RAD
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 18
C que e !avaServer laces?
!
...uma especificao
!
JSR 127 (JSF 1.0 e JSF 1.1) 2004
!
JSF 1.0 no alcanou o sucesso esperado
!
JSF 1.1 corrigiu os erros da verso anterior
!
JSR 252 (JSF 1.2) 2006 (JavaEE 5.0)
!
Melhor compatibilidade com JSP 2.1, correo de bugs e
algumas melhorias
!
JSR 314 (JSF 2.0) 2008 (JavaEE 6.0)
!
Arquitetura, produtividade, AJAX, ferramentas RAD,
melhores componentes U, ...
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 19
C que e !avaServer laces?
!
...framework MVC
!
Um conjunto de APs para:
!
Representar componentes U e gerenciar o estados destes
componentes
!
Manipular eventos e validao de entrada do usurio
!
Definir e controlar a navegao entre pginas
!
Dar suporte a internacionalizao e acessibilidade
!
Um conjunto de tags JSP para representar
componentes JSF num pgina JSP
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 20
C que e !avaServer laces?
!
...um framework baseado em
componentes de interface com o usurio
!
Construdo sob o conceito de componentes
!
Os componentes so a base para construo da
interface com o usurio
!
Existem componentes padres equivalentes a quase
todas as tags HTML e diversos componentes
auxiliares
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 21
C que e !avaServer laces?
!
...um framework baseado em
componentes de interface com o usurio
!
Existem diversas bibliotecas de componentes
disponveis comerciais e open sources
!
Os componentes so expressos atravs de tags
numa pgina JSP e posteriormente transformados
em HTML
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 22
C que e !avaServer laces?
!
...um framework dirigido a eventos
!
Possui um modelo para manipulao de eventos
!
Componentes geram determinados eventos
!
Efetua uma chamada um mtodo (ao no servidor)
!
O estado da aplicao web muda devido ao evento
disparado pelo usurio
!
Um evento pode ser um click de um boto, focar
sobre um input ou mesmo alterar o valor de uma
combo-box
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 23
C que e !avaServer laces?
!
...um padro de mercado
!
uma especificao (JCP)
!
JavaEE 5.0 (e em breve JavaEE 6.0)
!
Suporte de big players
!
Sun, Apache, BM, Oracle, BEA, JBoss, Borland etc
!
DEs (Netbeans, Eclipse, JDeveloper etc)
!
mplementaes (Sun, Apache, BM, Oracle, ...)
!
Conjuntos de componentes (Richfaces, Apache Myfaces, ADF
Faces, cefaces, WoodStock etc)
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 24
C que e !avaServer laces?
!
...RAD (Rapid Application Development)
!
4 camadas
!
Arquitetura de componentes bsica
!
Conjunto de componentes padro
!
nfra-estrutura da aplicao
!
Ferramenta RAD
!
JSF padroniza os primeiros trs pontos e permite a
criao de ferramentas RAD
!
Utiliza-se DEs drag-and-drop para construir aplicaes
!
Sun Studio Creator, JDeveloper, NetBeans etc
IavaServer Iaces ...
uesenvolvlmenLo com !avaServer laces 25
Por que usar
JavaServer Faces?
uesenvolvlmenLo com !avaServer laces 26
or que usar !avaServer laces?
!
um padro de mercado
!
Presente na especificao JEE5.0 e em breve
na JEE6.0
!
Suporte de big players
!
Fcil de usar, e produtivo tambm
!
Abstrao para desenvolvimento de aplicaes web
!
Modelo de programao dirigido a eventos (oposto ao
modelo HTTP request/response)
!
Baixa curva de aprendizagem
!
Componentes j prontos
uesenvolvlmenLo com !avaServer laces 27
or que usar !avaServer laces?
!
Reusabilidade e estrutura de componentes
extensvel
!
Acessibilidade (browser, celulares, pdas, ...)
uesenvolvlmenLo com !avaServer laces 28
or que usar !avaServer laces?
!
Suporte cross-browser
!
Segurana
!
OWASP (Open Web Application Security Project)
!
cross-site scripting, session hijacking, execuo de
mtodos etc
!
Natureza orientada a componentes, validao e
pontos de extenso
!
Grande atividade da comunidade em fruns,
listas de discusso, blogs, portais, revistas etc
!
ntegrao com diversos frameworks
uesenvolvlmenLo com !avaServer laces 29
or que usar !avaServer laces?
!
Suporte cross-browser
!
Segurana
!
OWASP (Open Web Application Security Project)
!
cross-site scripting, session hijacking, execuo de
mtodos etc
!
Natureza orientada a componentes, validao e
pontos de extenso
!
Grande atividade da comunidade em fruns,
Iistas de discusso, blogs, portais, revistas etc
!
ntegrao com diversos frameworks
!"#"$%&#%&'(")%*'
+,-%&,"-./,"0'1&/23
4--35667&/23*87//70%8)/967&/236:"#"*;
<%:27
4--3566===8)%:278/&76!
uesenvolvlmenLo com !avaServer laces 30
or que usar !avaServer laces?
!
Templating
!
Facelets, JSFTemplating
!
Tiles, Sitemesh
!
DEs
!
Eclipse (MyEclipse, Europa, etc)
!
NetBeans (Visual Web Pack)
!
Oracle JDeveloper
!
ntelliJ DEA
!
Red Hat Developer Studio
!
JSFToolBox (Dreamweaver)
!
JBuilder
!
BM RAD (Rational App/Web Developer)
uesenvolvlmenLo com !avaServer laces 31
or que usar !avaServer laces?
!
Grande variedade de componentes comerciais e open
source disponveis
!
Myfaces 1omahawk
!
Myfaces Sandbox
!
Myfaces 1obago
!
Myfaces 1rlnldad
!
Myfaces CrchesLra
!
Aul laces
!
lcelaces
!
WoodSLock
!
neL AdvanLage
!
WebCallleolaces
!
!8oss 8lchlaces
!
!8oss A[ax4[sf
!
8ackbase
!
Slmpllca (LCrulser SulLe)
!
CulpuklL
!
8lueprlnLs
!
8Claces
!
!enla4laces
!
Zk
!
C4!Sl (CW1 Al)
!
?ul4!Sl (?ahoo Al)
!
LxL4!Sl (LxL Al)
!
uynamlc laces
!
Crank
* Mais componentes? http://www.jsfmatrix.net/
uesenvolvlmenLo com !avaServer laces 32
Criando o projeto web
uesenvolvlmenLo com !avaServer laces 33
AmblenLe de desenvolvlmenLo
!
JDK 6.0
!
Eclipse 3.4 (Ganymede)
!
Tomcat 6.x
!
Servlet 2.5
!
Jsp 2.1
uesenvolvlmenLo com !avaServer laces 34
As blblloLecas do !Sl
!
JSF R 1.2 (Mojarra)
http://javaserverfaces.dev.java.net/download.html
!
jsf-api.jar
!
jsf-impl.jar
!
JSTL
https://maven-repository.dev.java.net/repository/jstl/jars/
!
jstl-12.jar
uesenvolvlmenLo com !avaServer laces 35
lnsLalando o 1omcaL
!
Baixando o Tomcat 6.x
http://tomcat.apache.org/
!
nstalando
!
Simplesmente descompacte-o em algum
diretrio, ex.: c:\cursojsf\java\
uesenvolvlmenLo com !avaServer laces 36
Crlando pro[eLo no Lcllpse
Criar um
Dynamic Web Project
uesenvolvlmenLo com !avaServer laces 37
Crlando pro[eLo no Lcllpse
Nome do projeto
Configurar e selecionar
o Tomcat 6.x
JSF 1.2 como
Configurao
padro do projeto
uesenvolvlmenLo com !avaServer laces 38
Crlando pro[eLo no Lcllpse
Selecionar
Apache Tomcat 6.x
uesenvolvlmenLo com !avaServer laces 39
Crlando pro[eLo no Lcllpse
Nome do
nosso servidor
Selecionar
diretrio raiz
do Tomcat
Selecionar
Java 6.0
uesenvolvlmenLo com !avaServer laces 40
Crlando pro[eLo no Lcllpse
No h o que alterar
aqui, apenas click
em "Next
uesenvolvlmenLo com !avaServer laces 41
Crlando pro[eLo no Lcllpse
Configurar e selecionar
as bibliotecas do
JSF 1.2 (Mojarra)
Adicionar o
URL Mapping Pattern
*.faces
uesenvolvlmenLo com !avaServer laces 42
Crlando pro[eLo no Lcllpse
!
Nosso projeto no Eclipse
ser algo semelhante a
imagem ao lado
!
Contudo ainda falta
adicionarmos a biblioteca
do JSTL ao projeto, logo
basta apenas copiarmos o
arquivo jstI-12.jar para
dentro do diretrio /WEB-
INF/Iib/
uesenvolvlmenLo com !avaServer laces 43
1esLando as conflguraes
!
Criaremos em /WebContent/ a pgina index.jsp
com o seguinte contedo:
uesenvolvlmenLo com !avaServer laces 44
1esLando as conflguraes
!
Faa o deploy da aplicao e inicialize o Tomcat
atravs da aba Servers do Eclipse
!
Acesse a URL
http://localhost:8080/cursojsf/index.faces
uesenvolvlmenLo com !avaServer laces 45
Exerccios
!
Crlar um pro[eLo web (!sf 1.2) no Lcllpse
!
1esLar as conflguraes aLraves da |ndex.[sp
(!"#$%&'()")
!
AlLerar o valor do componenLe h:output1ext
para qualquer ouLro
uesenvolvlmenLo com !avaServer laces 46
Managed Beans
uesenvolvlmenLo com !avaServer laces 47
Managed 8ean (C que e?)
!
Pojo (Plain Old Java Object)
!
Controller, "linka a view ao modelo
!
Funciona como representao da view
!
So acessadas via Expression Language
(EL) na jsp
!
Lembra o Action+ActionForm do Struts
uesenvolvlmenLo com !avaServer laces 48
Managed 8ean
!
maginem que temos uma pgina com o
seguinte formulrio de login
[Iogin.jsp]
uesenvolvlmenLo com !avaServer laces 49
Managed 8ean
!
Como representaramos esse formulrio
atravs de uma classe Java?
!
Lembram que um managed bean funciona
como uma representao de uma view?
!
Lembram tambm que um managed bean
um simples POJO?
uesenvolvlmenLo com !avaServer laces 50
Managed 8ean
[LoginBean.java]
uesenvolvlmenLo com !avaServer laces 51
Managed 8ean (8eglsLrando)
!
necessrio registrarmos um managed
bean para que o framework (Jsf) saiba
que ele existe
!
Um managed bean registrado
(configurado) no arquivo de configuraes
do Jsf, faces-config.xmI
uesenvolvlmenLo com !avaServer laces 52
Managed 8ean (8eglsLrando)
!
A configurao de um managed bean no
faces-config-xmI se resume basicamente
ao cdigo abaixo:
uesenvolvlmenLo com !avaServer laces 53
Managed 8ean (8eglsLrando)
!
Um managed bean vive de acordo com
seu escopo
de conversao
appIication,
session,
request,
none
uesenvolvlmenLo com !avaServer laces 54
Managed 8ean
!
Mas como ligar (linkar) nosso managed
bean aos componentes do nosso
formulrio?
[/pages/Iogin.jsp]
uesenvolvlmenLo com !avaServer laces 55
Managed 8ean
[LoginBean.java]
[/pages/Iogin.jsp]
uesenvolvlmenLo com !avaServer laces 56
Managed 8ean
!
Lembra da tal da Expression Language
(EL)?
[/pages/Iogin.jsp]
uesenvolvlmenLo com !avaServer laces 57
Managed 8ean
!
Detalhando uma EL
!"loginBean.senha#
Nome do nosso
managed bean configurado
no faces-config.xmI
Atributo "senha do nosso
managed bean. necessrio
criar os mtodos get e set
para o atribudo
uesenvolvlmenLo com !avaServer laces 58
Exerccios
!
Crlar o managed bean de logln e conflgura-lo
no faces-conf|g.xm|
!
Lscrever a pglna com o formulrlo de logln
uLlllzando os componenLes do !sf e llgando-os
ao managed bean
!
SubmeLer o formulrlo e verlflcar se os
aLrlbuLos do managed bean foram
preenchldos correLamenLe
uesenvolvlmenLo com !avaServer laces 59
Exerccios
!
Crlar um formulrlo de cadasLro de endereo
com os segulnLes campos: 8ua, ComplemenLo,
8alrro, Cep, LsLado e Cldade
!
SubmeLer o formulrlo e lmprlmlr os valores
preenchldos no console
!
uLlllzar o componenLe h:|nput1extarea para
represenLar o campo ComplemenLo"
uesenvolvlmenLo com !avaServer laces 60
Um pouco de teoria
uesenvolvlmenLo com !avaServer laces 61
um pouco de Leorla
!
rvore de componentes
!
Ciclo de vida
!
web.xmI em um projeto JSF
!
View State Method
uesenvolvlmenLo com !avaServer laces 62
rvore de componenLes
!
Cada view composto por uma hierarquia de
componentes que representa o estado daquela
view
uesenvolvlmenLo com !avaServer laces 63
rvore de componenLes
!
Componentes podem ser adicionados na rvore
(view) programaticamente ou via template (JSP
o default)
!
Componentes so expressos atravs de tags
em uma pgina JSP
!
Os componentes padres so divididos em dois
grupos
!
Faces core: <f:view>, <f:loadBundle>, <f:param>
!
HTML wrappers: <h:inputText>, <h:panelGrid>,
<h:selectOneMenu>
uesenvolvlmenLo com !avaServer laces 64
Clclo de vlda
!
O ciclo de vida de uma requisio JSF
possui 6 fases:
1. Restore view
2. Apply request values
3. Process validation
4. Update model values
5. nvoke application
6. Render response
uesenvolvlmenLo com !avaServer laces 65
Clclo de vlda
May skip to
render phase
or abort request
Restore
View
AppIy Request
VaIues
Process
VaIidations
Update
ModeI
Invoke
AppIication
Render
Response
Request
Respons
e
Retrieve component tree
from client or session
Decode components
(populate w/ String values)
Convert Strings to Objects
Validate Objects
nvoke bean method(s)
Compute navigation
Call bean getters to
populate components
uesenvolvlmenLo com !avaServer laces 66
web.xml
!
Configurao bsica de uma aplicao JSF
uesenvolvlmenLo com !avaServer laces 67
web.xml
!
E como a aplicao sabe qual o faces-
config.xmI ele deve interpretar?
uesenvolvlmenLo com !avaServer laces 68
web.xml
!
Dependendo da implementao JSF ou
conjunto de componentes utilizados na
aplicao pode-se fazer necessrio (ou no)
maiores configuraes ou customizaes de
acordo com a necessidade do projeto
uesenvolvlmenLo com !avaServer laces 69
vlew SLaLe MeLhod
!
Se cada view do JSF representada
atravs de uma rvore de
componentes e esta criada ou
recuperada na 1 fase do ciclo de
vida, ento onde esta rvore de
componentes armazenada?
uesenvolvlmenLo com !avaServer laces 70
vlew SLaLe MeLhod
!
O framework possui duas maneiras
de persistir o estado da rvore de
componentes
!
server (default)
!
O estado da rvore armazenado no lado
servidor, ou seja, na session do usurio
!
cIient
!
O estado da rvore armazenado no lado
cliente (browser), ou seja, em um campo
input-hidden na pgina HTML
uesenvolvlmenLo com !avaServer laces 71
vlew SLaLe MeLhod
!
Como decidir entre server ou cIient?
uesenvolvlmenLo com !avaServer laces 72
Exerccios
!
Mover o arqulvo faces-conf|g.xm| para o
dlreLrlo ]WL8-INI]conf|g] e lnformar esLa
mudana na apllcao (web.xm|)
!
verlflcar o cdlgo fonLe da pglna gerada no
dols modos (server e c||ent) do
S1A1L_SAvlnC_ML1PCu
(ulca: procurar pelo lnpuL hldden *+,+-./+012.341567+71)
uesenvolvlmenLo com !avaServer laces 73
JSF Expression
Language (EL)
uesenvolvlmenLo com !avaServer laces 74
!Sl LL
!
Semelhante ao JSTL porm usa-se #{} no lugar
de ${}
!
Pode-se executar mtodos no modelo atravs
de expresses
!
No processada imediatamente como JSP EL
!
A partir da JSF 1.2 utiliza-se a Unified
Expression Language (JSP 2.1) que resolve
problemas de incompatibilidade entre a JSF-EL
e JSP-EL
uesenvolvlmenLo com !avaServer laces 75
!Sl LL
[Alguns exemplos]
uesenvolvlmenLo com !avaServer laces 76
!Sl LL
!
Sintaxe
uesenvolvlmenLo com !avaServer laces 77
!Sl LL
!
Sintaxe
uesenvolvlmenLo com !avaServer laces 78
!Sl LL
!
Escopos e variveis
uesenvolvlmenLo com !avaServer laces 79
!Sl LL
!
Escopos e variveis
uesenvolvlmenLo com !avaServer laces 80
!Sl LL
!
Escopos e variveis
uesenvolvlmenLo com !avaServer laces 81
Exerccios
!
Crlar um bean chamado usuarlo8ean" com os
aLrlbuLos (nome, sobrenome e ldade(lnL)), o
consLruLor do bean dever lnlclar os seus aLrlbuLos.
Crlar uma pglna [sp (el.[sp), nela dever ser
lmpresso as lnformaes do bean, usando !Sl LL.
Adlclonar o bean no escopo de requesL".
uesenvolvlmenLo com !avaServer laces 82
Exerccios
!
Adlclonar um aLrlbuLo LlsL (ArrayLlsL) e lnserlr 3
elemenLos. Acessar o elemenLo da ulLlma poslo na
llsLa.
!
Adlclonar um aLrlbuLo Map (PashMap) e lnserlr 3
elemenLos. Acessar o elemenLo dado uma chave.
uesenvolvlmenLo com !avaServer laces 83
Exerccios
!
Crlar um componeLe ul na pglna el.[sp e s exlbl-lo
na Lela caso a ldade do usurlo se[a malor que 18
anos. ulca: Colocar uma condlo no aLrlbuLo
rendered do componenLe vlsual.
!
ulca:
#{(user.peso > 100) ? true : false}
uesenvolvlmenLo com !avaServer laces 84
!Sl LL (8lndlngs)
!
Em JSF ns temos 3 tipos de bindings
(ligaes):
!
Value binding
!
Method binding
!
Component binding
uesenvolvlmenLo com !avaServer laces 85
!Sl LL (8lndlngs)
!
Value binding
!
Ligamos a propriedade de um bean como
valor do componente
uesenvolvlmenLo com !avaServer laces 86
!Sl LL (8lndlngs)
!
Method binding
!
Ligamos o mtodo de um bean como uma
"ao do componente
uesenvolvlmenLo com !avaServer laces 87
!Sl LL (8lndlngs)
!
Component binding
!
Ligamos a propriedade de um bean como
representao do componente na view
uesenvolvlmenLo com !avaServer laces 88
Exerccios
!
Crlar uma pglna com dols componenLes, um lnpuL
(lnL) e um boLo (Ck") . Se o valor do lnpuL for
malor que 1000, o nome do boLo deve mudar para
LenLe novamenLe".
!
AlLere o exerclclo anLerlor para desablllLar o boLo
caso o valor enLrado pelo usurlo se[a lgual a 171
uesenvolvlmenLo com !avaServer laces 89
Navegao
uesenvolvlmenLo com !avaServer laces 90
navegao
!
Navegao de uma pgina para outra
!
Simples e poderoso sistema de navegao
!
O framework seleciona a prxima view
!
Baseado na view anterior
!
Resultado (outcome) de uma action
!
Atravs do evento
!
Qualquer combinao acima
!
Permite a utilizao do wildcard ('*') para
pginas de origem (from-view-id)
uesenvolvlmenLo com !avaServer laces 91
navegao
!
A regras de navegao so registradas no
faces-config.xmI
uesenvolvlmenLo com !avaServer laces 92
navegao
!
Podemos navegar entre pginas de maneira
esttica
[/pages/nav/page1.jsp]
uesenvolvlmenLo com !avaServer laces 93
navegao
!
Ou de maneira dinmica
[/pages/nav/page1.jsp]
[NavBean.java]
uesenvolvlmenLo com !avaServer laces 94
Exerccios
!
Crlar as pglnas e as regras de navegao baseado na
lmagem abalxo:
uesenvolvlmenLo com !avaServer laces 95
Exerccios
!
Crlar a regra de navegao global baseado na
lmagem abalxo:
uesenvolvlmenLo com !avaServer laces 96
Exerccios
!
volLando ao formulrlo de logln: LfeLue uma lglca
de auLenLlcao no meLodo Log|n8ean.|ogar(): Caso
o logln se[a lgual a senha enLrada pelo usurlo enLo
voc deve encamlnha-lo para uma pglna de
sucesso, caso conLrrlo o usurlo deve LenLar logar
novamenLe na apllcao.
uesenvolvlmenLo com !avaServer laces 97
ModeIo de
componentes
uesenvolvlmenLo com !avaServer laces 98
Modelo de componenLes
!
Mensagens
!
Converters
!
Validators
!
Eventos e Listeners
!
Componentes bsicos
uesenvolvlmenLo com !avaServer laces 99
Mensagens
!
So as mensagens de informao ou erro
exibidas ao usurio da aplicao. Qualquer
parte da aplicao (managed beans,converters,
validators etc) poder gerar as mensagens
quando necessrio.
!
Basicamente existem dois tipos de mensagens
de erro
!
Aplicao (lgica de negcios, bando de dados,
conexo etc)
!
nputs (converso, validao de campos etc)
uesenvolvlmenLo com !avaServer laces 100
Mensagens
!
Mensagens da aplicao
uesenvolvlmenLo com !avaServer laces 101
Mensagens
!
Mensagens dos inputs
uesenvolvlmenLo com !avaServer laces 102
Exerccios
!
volLando ao formulrlo de logln: Adlclone
mensagens de erro aos lnpuLs de logln e senha, e
Lorne-os obrlgaLrlos.
!
Alnda no formulrlo de logln, no meLodo
Log|n8ean.|ogar(): Caso o logln se[a dlferenLe da
senha enLrada pelo usurlo, exlba uma mensagem de
erro da apllcao.
uesenvolvlmenLo com !avaServer laces 103
ConverLers
!
Tem por finalidade converter e/ou formatar
objetos do tipo Java para String e vice-versa
!
JSF j nos fornece converters padres para
date / time, inteiros, nmeros e moeda
!
JSF nos permite implementar nosso prprio
converter
uesenvolvlmenLo com !avaServer laces 104
ConverLers
!
Converter padro para datetime
uesenvolvlmenLo com !avaServer laces 105
Exerccios
!
laa alguns LesLes com os converLers padres do !Sl
uesenvolvlmenLo com !avaServer laces 106
ConverLers
!
mplementando seu prprio converter
1. Devemos implementar a interface
javax.faces.convert.Converter
2. Registrar nosso converter no faces-config.xmI
3. nformar ao componente qual converter utilizar
uesenvolvlmenLo com !avaServer laces 107
Exerccios
!
lmplemenLar um converLer que formaLe para
malusculo um LexLo enLrado pelo usurlo
!
lmplemenLar um converLer que formaLe um Cl
enLrado pelo usurlo, ou se[a, formaLar um Cl
como 898:;;<=><?" enLrado pelo usurlo para
898.:;;.<=>@<?" por exemplo.
uesenvolvlmenLo com !avaServer laces 108
valldaLors
!
Tem a responsabilidade de garantir que o valor
entrado pelo usurio seja vlido
!
Voc pode validar tanto objetos como strings
!
JSF j nos fornece validators padres como
required, length e ranges
!
JSF nos permite implementar nosso prprio
validator
uesenvolvlmenLo com !avaServer laces 109
valldaLors
!
Validator padro para length
uesenvolvlmenLo com !avaServer laces 110
Exerccios
!
laa alguns LesLes com os valldaLors padres do !Sl
uesenvolvlmenLo com !avaServer laces 111
valldaLors
!
mplementando seu prprio validator
1. Devemos implementar a interface
javax.faces.vaIidator.VaIidator
2. Registrar nosso validator no faces-config.xmI
3. nformar ao componente qual validator utilizar
uesenvolvlmenLo com !avaServer laces 112
Exerccios
!
lmplemenLar um valldaLor que no permlLa que uma
daLa enLrada pelo usurlo se[a malor que a daLa
aLual
!
lmplemenLar um valldaLor que vallde se o usurlo
enLrou com um e-mall vlldo
uesenvolvlmenLo com !avaServer laces 113
LvenLos e LlsLeners
!
JSF usa o modelo JavaBeans event/listener
(tambm utilizado no Swing). Componentes U
(e outros objetos) geram eventos, e listeners
podem ser registrados para manipular esses
eventos.
!
Os listeners mais comuns do JSF so:
!
Value-change listener
!
Action listener
uesenvolvlmenLo com !avaServer laces 114
LvenLos e LlsLeners
!
Value-change events
[EventBean.java]
[/pages/events.jsp]
uesenvolvlmenLo com !avaServer laces 115
LvenLos e LlsLeners
!
Action events
[EventBean.java]
[/pages/events.jsp]
uesenvolvlmenLo com !avaServer laces 116
Exerccios
!
SemelhanLe ao exemplo do value-change evenL,
uLlllze um h:commandL|nk com um act|on ||stener
para exlblr ou esconder a grld de numero de
dependenLes. L alLerne o nome do llnk enLre A-4B4C"
e A20)'(1C" de acordo com a renderlzao da grld.
uesenvolvlmenLo com !avaServer laces 117
Exerccios
!
Crle dols componenLes h:se|ectCneMenu, um para
seleo de uls e ouLro para seleo de cldades,
porem o combobox de cldades dever ser carregado
de acordo com a ul seleclonada na prlmelra
combobox.
uesenvolvlmenLo com !avaServer laces 118
ComponenLes bslcos
!
h:commandLink
!
f:setPropertyActionListener
!
h:outputLink e f:param
!
h:graphicmage
!
h:selectBooleanCheckbox
!
h:selectManyCheckbox
!
h:selectManyListbox
!
h:panelGroup
!
h:dataTable
uesenvolvlmenLo com !avaServer laces 119
Exerccios
!
Crle um componenLe D40E"427 (Lambem conhecldo
como 2F&77"1@B)-) uLlllzando-se do componenLe
h:se|ectManyL|stbox
!
Crle uma h:data1ab|e na qual se[a posslvel seleclonar
as llnhas aLraves de um h:se|ect8oo|eanCheckbox
uesenvolvlmenLo com !avaServer laces 120
InternacionaIizao
uesenvolvlmenLo com !avaServer laces 121
lnLernaclonallzao
!
O Java Server Faces disponibiliza um "sistema
de mensagens muito eficiente que permite uma
fcil internacionalizao de suas aplicaes.
!
Para que este "sistema de mensagens funcione
voc precisa informar a aplicao qual o
Message BundIe e onde encontr-lo. Feito isso,
basta criar os arquivos .properties de acordo
com os LocaIes desejados. importante notar
que um Locale definido por uma lngua (pt ou
en) e por um pas (BR ou US), porm no
necessrio informar o pas.
uesenvolvlmenLo com !avaServer laces 122
lnLernaclonallzao
!
nformando a aplicao qual e aonde encontrar
o Message BundIe. Adicione as linhas abaixo
no faces-config.xmI
[faces-config.xmI]
uesenvolvlmenLo com !avaServer laces 123
lnLernaclonallzao
!
Crie os arquivos messages_pt_BR.properties
e messages_en.properties com os seguintes
contedos:
!
messages_pt_BR.properties:
welcome=Bem vindo!
!
messages_en.properties:
welcome=Welcome!
uesenvolvlmenLo com !avaServer laces 124
lnLernaclonallzao
!
Utilizando os Message BundIes nas pginas:
[weIcome.jsp]
uesenvolvlmenLo com !avaServer laces 125
Exerccios
!
uLlllzando o exemplo welcome.[sp, Lroque as
mensagens para 51"0)G1$H=IJ" e K)+$,4'(+$H=IJ"
dos arqulvos .propert|es, e uLlllze o componenLe
h:outputIormat [unLamenLe com o componenLe
f:param para passar parmeLros para a mensagem.
uesenvolvlmenLo com !avaServer laces 126
Exerccios
!
lnLernaclonallze a pglna de logln (logln.[sp), ou se[a,
lnLernaclonallze os LexLos dos labels e do boLo do
formulrlo.
uesenvolvlmenLo com !avaServer laces 127
Adicionando suporte
AJAX
uesenvolvlmenLo com !avaServer laces 128
A!Ax
!
O que AJAX?
AJAX (acrnimo em lngua inglesa de Asynchronous
Javascript And XML) o uso sistemtico de tecnologias
providas por navegadores, como Javascript e XML, para
tornar pginas mais interativas com o usurio, utilizando-
se de solicitaes assncronas de informaes. AJAX no
somente um novo modelo, tambm uma iniciativa na
construo de aplicaes web mais dinmicas e criativas.
AJAX no uma tecnologia, so realmente vrias
tecnologias conhecidas trabalhando juntas, cada uma
fazendo sua parte, oferecendo novas funcionalidades. [...]
http://pt.wikipedia.org/wiki/AJAX_%28programa%C3%A7%C3%A3o%29
uesenvolvlmenLo com !avaServer laces 129
8lchfaces
!
Permite inserir funcionalidades AJAX numa
aplicao JSF de maneira simples e
transparente atravs de componentes (sem a
necessidade de escrever cdigo Javascript)
!
Conjunto de componentes ricos com suporte
AJAX nativo (um grande nmero de
componentes)
!
Projeto da JBoss
uesenvolvlmenLo com !avaServer laces 130
8lchfaces
!
Exemplo bsico
uesenvolvlmenLo com !avaServer laces 131
8lchfaces
!
Como ele trabalha
uesenvolvlmenLo com !avaServer laces 132
8lchfaces
!
Adicionando suporte AJAX
1. Baixando a ltima verso do Richfaces (3.2.x)
http://labs.jboss.com/jbossrichfaces/downloads
2. Baixando as dependncias bsicas
!
commons-beanutils-1.7.0.jar
!
commons-collections-3.2.jar
!
commons-digester-1.8.jar
!
commons-logging-1.1.jar
3. Adicione as libs ao projeto (/WEB-INF/Iib)
uesenvolvlmenLo com !avaServer laces 133
8lchfaces
!
Adicionando suporte AJAX
4. Adicione o cdigo abaixo no web.xml
uesenvolvlmenLo com !avaServer laces 134
8lchfaces
!
Adicionando suporte AJAX
5. mporte as taglibs abaixo nas pginas JSP
6. Rode o exemplo bsico
uesenvolvlmenLo com !avaServer laces 135
Exerccios
!
Adlclone suporLe A!Ax ao exerclclo do Va|ue-change
event (Aquele que exlbe ou esconde o numero de
dependenLes)
!
Adlclone suporLe A!Ax ao exerclclo do Act|on event
(Aquele que exlbe ou esconde o numero de
dependenLes)
uesenvolvlmenLo com !avaServer laces 136
Exerccios
!
Adlclone suporLe A!Ax ao exerclclo do Va|ue-change
event (Aquele que carrega a combobox de cldades
de acordo com a combobox de ul)
!
Adlclone suporLe A!Ax ao nosso componenLe p|ck||st
crlado anLerlormenLe
uesenvolvlmenLo com !avaServer laces 137
Exerccios
!
SubsLlLua o componenLe h:data1ab|e do exerclclo
anLerlor pelo componenLe r|ch:data1ab|e e adlclone
paglnao ao componenLe aLraves do componenLe
r|ch:datascro||er
uesenvolvlmenLo com !avaServer laces 138
Exerccios
!
ve[am e faam alguns LesLes com alguns dos
componenLes na pglna de demonsLrao do
8lchfaces
hLLp://llvedemo.exadel.com/rlchfaces-demo/lndex.[sp

Das könnte Ihnen auch gefallen