Download - Os 10 maus hábitos dos desenvolvedores JSF
![Page 2: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/2.jpg)
Quem?
● Desenvolvedor● Coordenador do grupo JavaSF● Entusiasta Java e JSF● Sócio da Triadworks● Trabalha na IVIA
“Rafael Ponte”
![Page 3: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/3.jpg)
JSF tenta encapsular toda a complexidade no desenvolvimento web com Java
![Page 4: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/4.jpg)
A maioria dos desenvolvedores webs que já trabalharam ou trabalham com algum framework “action-like” acabam tendo grandes dificuldades ao desenvolverem com JSF.
![Page 5: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/5.jpg)
Criando-se então maus hábitos..
![Page 6: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/6.jpg)
10º Mau hábito
![Page 7: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/7.jpg)
Usar <c:if/> ou <c:when/> para esconder componentes do usuário
![Page 8: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/8.jpg)
<c:if test=”#{bean.admin}”><h:dataTable var=”row”><h:column>...
</h:column></h:dataTable>
</c:if>
![Page 9: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/9.jpg)
Usar <c:if/> ou <c:when/> para esconder componentes do usuário
SOLUÇÃO?
![Page 10: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/10.jpg)
Utilizar o atributo rendered dos
componentes para escondê-los do usuário
![Page 11: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/11.jpg)
<c:if test=”#{bean.admin}”><h:dataTable
rendered=”#{bean.admin}”><h:column>...
</h:column></h:dataTable>
</c:if>
![Page 12: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/12.jpg)
9º Mau hábito
![Page 13: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/13.jpg)
Usar rendered="#{bean.alive}" em um componente que dispare eventos quando "bean" é de escopo de request
![Page 14: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/14.jpg)
<h:commandButton value=”Salvar” action=”#{bean.salvar}” rendered=”#{bean.admin}” />
![Page 15: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/15.jpg)
Usar rendered="#{bean.alive}" em um componente que dispare eventos quando "bean" é de escopo de request e "alive" é um atributo boolean de classe.
SOLUÇÃO?
![Page 16: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/16.jpg)
Ampliar o escopo do managed bean para session ou se utilizar de algum framework ou componente de escopo conversacional
![Page 17: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/17.jpg)
O uso indevido ou exarcebado da session é prejudicial para a aplicação.
![Page 18: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/18.jpg)
✔ Myfaces Tomahawk [t:saveState]✔ Myfaces Orchestra✔ Myfaces Trinidad [pageFlowScope]✔ JBoss Seam✔ JBoss Richfaces [a4j:keepAlive]✔ etc
mais longo que request | mais curto que session
![Page 19: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/19.jpg)
8º Mau hábito
![Page 20: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/20.jpg)
Acham que a tag <redirect/> nas regras de navegação muda apenas a url da barra de endereço do browser
![Page 21: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/21.jpg)
SOLUÇÃO?
![Page 22: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/22.jpg)
Simplesmente entendam como funciona um
REDIRECT
![Page 23: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/23.jpg)
7º Mau hábito
![Page 24: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/24.jpg)
Alterar o estado de algum componente no lado cliente [browser] através de javascript e esperar que isso seja “entendido” pelo JSF
![Page 25: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/25.jpg)
Alterar o estado de algum componente no lado cliente [browser] através de javascript e esperar que isso seja “entendido” pelo JSF
SOLUÇÃO?
![Page 26: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/26.jpg)
Alterar o estado do componente no lado servidor via AJAX e
re-renderizar o componente
![Page 27: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/27.jpg)
6º Mau hábito
![Page 28: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/28.jpg)
Utilização demasiada de parâmetros de request e desenvolvimento voltado a "chave primária"
![Page 29: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/29.jpg)
Utilização demasiada de parâmetros de request e desenvolvimento voltado a "chave primária"
SOLUÇÃO?
![Page 30: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/30.jpg)
Pensar mais orientado a objetos e deixar com que os
componentes troquem entidades e não “chaves
primárias”
![Page 31: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/31.jpg)
5º Mau hábito
![Page 32: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/32.jpg)
Não implementam os métodos equals() e hashCode() das entidades da aplicação
![Page 33: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/33.jpg)
Esquecem de implementar os métodos equals() e hashCode() das entidades da aplicação
SOLUÇÃO?
![Page 34: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/34.jpg)
Apenas implementem os
métodos
![Page 35: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/35.jpg)
4º Mau hábito
![Page 36: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/36.jpg)
Implementam o próprio mecanismo de
SEGURANÇA
![Page 37: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/37.jpg)
SOLUÇÃO?
![Page 38: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/38.jpg)
Utilizem um framework especializado
![Page 39: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/39.jpg)
3º Mau hábito
![Page 40: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/40.jpg)
Paginação de registros na session
![Page 41: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/41.jpg)
![Page 42: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/42.jpg)
Uma das melhores maneiras de matar a escalabilidade da aplicação é a utilização indiscriminada da session
![Page 43: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/43.jpg)
SOLUÇÃO?
![Page 44: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/44.jpg)
Paginação sob demanda
![Page 45: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/45.jpg)
2º Mau hábito
![Page 46: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/46.jpg)
![Page 47: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/47.jpg)
Utilizam os componentes AJAX
de maneira INEFICIENTE
![Page 48: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/48.jpg)
SOLUÇÃO?
![Page 49: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/49.jpg)
![Page 50: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/50.jpg)
Regras de navegação orientada a páginas
estados
![Page 51: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/51.jpg)
1º Mau hábito
![Page 52: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/52.jpg)
1º -e o pior- Mau hábito
![Page 53: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/53.jpg)
JSF LIFECYCLE
![Page 54: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/54.jpg)
JSF LIFECYCLE
A maioria dos desenvolvedores NÃO
entendem
![Page 55: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/55.jpg)
JSF LIFECYCLE
SOLUÇÃO?
![Page 56: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/56.jpg)
http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html
Entendam o ciclo de vida
![Page 57: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/57.jpg)
Concluindo..
![Page 58: Os 10 maus hábitos dos desenvolvedores JSF](https://reader031.vdocuments.pub/reader031/viewer/2022020116/55621920d8b42acb1e8b52cc/html5/thumbnails/58.jpg)
Perguntas?