Você está na página 1de 59

Os 10

(dez) maus
hbitos dos

desenvolvedores JSF
Rafael Ponte
http://www.rponte.com.br
rponte@gmail.com

Quem?
Rafael Ponte

Desenvolvedor

Coordenador do grupo JavaSF

Entusiasta Java e JSF

Scio da Triadworks

Trabalha na IVIA

JSF tenta encapsular


toda a complexidade no
desenvolvimento
web
com Java

A maioria dos desenvolvedores webs que


j trabalharam ou trabalham com algum
framework action-like acabam tendo
grandes dificuldades ao desenvolverem
com JSF.

Criando-se
hbitos..

ento

maus

10 Mau hbito

Usar <c:if/> ou <c:when/>


para esconder componentes
do usurio

<c:if test=#{bean.admin}>
<h:dataTable var=row>
<h:column>
...
</h:column>
</h:dataTable>
</c:if>

Usar <c:if/> ou <c:when/>


SOLUO?
para esconder
componentes
do usurio

Utilizar o atributo
rendered dos
componentes para
escond-los do usurio

<c:if test=#{bean.admin}>
<h:dataTable
rendered=#{bean.admin}>
<h:column>
...
</h:column>
</h:dataTable>
</c:if>

9 Mau hbito

Usar rendered="#{bean.alive}" em
um componente que dispare
eventos quando "bean" de
escopo de request

<h:commandButton value=Salvar
action=#{bean.salvar}
rendered=#{bean.admin} />

Usar rendered="#{bean.alive}" em
um componente que dispare
eventos SOLUO?
quando "bean" de
escopo de request e "alive" um
atributo boolean de classe.

Ampliar
o
escopo
do
managed bean para session
ou se utilizar de algum
framework ou componente
de escopo conversacional

O uso indevido ou exarcebado da


session prejudicial para a
aplicao.

mais longo que request | mais curto que session

Myfaces Tomahawk [t:saveState]


Myfaces Orchestra
Myfaces Trinidad [pageFlowScope]
JBoss Seam
JBoss Richfaces [a4j:keepAlive]
etc

8 Mau hbito

Acham que a tag <redirect/>


nas regras de navegao
muda apenas a url da barra
de endereo do browser

SOLUO?

entendam
como funciona um

Simplesmente

REDIRECT

7 Mau hbito

Alterar o estado de algum


componente no lado cliente
[browser] atravs de javascript e
esperar que isso seja entendido
pelo JSF

Alterar o estado de algum


componente no lado cliente
[browser] SOLUO?
atravs de javascript e
esperar que isso seja entendido
pelo JSF

Alterar o estado do
componente no lado
servidor via AJAX e
re-renderizar o
componente

6 Mau hbito

Utilizao
demasiada
de
parmetros
de
request
e
desenvolvimento voltado a "chave
primria"

Utilizao
demasiada
de
parmetros
de
request
e
SOLUO?
desenvolvimento voltado a "chave
primria"

Pensar mais orientado a


objetos e deixar com que os
componentes troquem
entidades e no chaves
primrias

5 Mau hbito

No implementam os mtodos
equals()
e
hashCode()
das
entidades da aplicao

Esquecem de implementar os
mtodos SOLUO?
equals() e hashCode()
das entidades da aplicao

Apenas

implementem os
mtodos

4 Mau hbito

Implementam o
prprio mecanismo de
SEGURANA

SOLUO?

Utilizem um framework
especializado

3 Mau hbito

Paginao de
registros na session

Uma das melhores maneiras de


matar a escalabilidade da
aplicao

a
utilizao
indiscriminada da session

SOLUO?

Paginao sob
demanda

2 Mau hbito

Utilizam os
componentes AJAX
de maneira
INEFICIENTE

SOLUO?

Regras de navegao
orientada a pginas
estados

1 Mau hbito

1 -e o pior- Mau hbito

JSF LIFECYCLE

JSF LIFECYCLE

A maioria dos
desenvolvedores NO
entendem

JSF LIFECYCLE

SOLUO?

http://balusc.blogspot.com
/2006/09/debug-jsf-lifecycle.html

Entendam o
ciclo de vida

Concluindo..

Perguntas?

Obrigado!
rponte@gmail.com
http://www.rponte.com.br