os 10 maus hábitos dos desenvolvedores jsf
DESCRIPTION
Toda tecnologia tende a trazer consigo um novo paradigma de como desenvolver partes específicas de software, contudo, algumas novas práticas nem sempre são entendidas, e algumas vezes antigas práticas permanecem dentro do novo paradigma tornando-se assim maus hábitos, e com JSF não seria diferente. Aqui será apresentado 10 discussões sobre os maus hábitos mais comuns entre os desenvolvedores JSF, hábitos encontrados não somente entre iniciantes, mas também entre alguns desenvolvedores mais experientes, e por sua vez será apresentado soluções para cada um deles.TRANSCRIPT
![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?