Algumas boas práticas com JSF e Richfaces

Esses dias eu estava fuçando meus arquivos e encontrei uma apresentação que eu havia utilizado para uma consultoria numa empresa muito conhecida no mercado local. A empresa estava adotando Jsf, mais especificamente Jboss Richfaces, como solução para a camada de visão de uma nova aplicação web que eles pretendiam desenvolver.

Na época, por volta de um ano atrás, fui contratado para ministrar um treinamento sobre como aplicar boas práticas no desenvolvimento com a tecnologia Jsf, pois a equipe de desenvolvedores desta empresa tinha o receio de não conseguir obter proveito dos recursos dos frameworks adotados, como também era de interesses deles “tunar” a utilização de AJAX na aplicação e por fim, como integrar Jsf com o framework javascript ExtJs.

A apresentação está bem simples, serve somente como resumo sobre o que foi passado à eles, porém apenas observando-a é possível saber como conseguir um melhor proveito dos frameworks e conjuntos de componentes ao redor de Jsf, principalmente no aspecto da utilização dos recursos AJAX oferecidos por vários dos componentes do Richfaces.

Algumas das práticas contidas nos slides já foram muito discutidas por aqui, outras eu sempre comento um pouco em alguns posts e na maioria das vezes elas foram muito discutidas na lista do JavaServer Faces International Group.

Algumas das dicas sobre a utilização do Richfaces/Ajax4jsf podem ter mudado de alguma forma no decorrer das versões do framework, outras features certamente surgiram para ajudar na melhor utilização dos componentes e recursos AJAX, contudo, a chave para “tunar” o Richfaces ou qualquer conjunto de componentes AJAX basicamente é:

  • Antes de enviar uma requisição AJAX decida o que enviar;
  • Antes de enviar uma requisição AJAX também decida o que atualizar;

Enfim, muito do que se foi discutido na apresentação está bem mais clara e fácil de encontrar hoje na documentação dos frameworks e conjunto de componentes, blogs, listas de dicussão, fóruns e artigos em revistas especializadas.

Tagged with: , , , , , ,
Posted in Boas Práticas, Java, JavaScript, JEE, JSF
8 comments on “Algumas boas práticas com JSF e Richfaces
  1. Rodrigo says:

    fala Ponte…
    legal o post, mas cade a parte q fala em usar jsf + extjs?
    valew

  2. Fabio Massa says:

    Muito bom o post, estamos com alguns problemas quanto ao immediate=”true”, os slides será de grande ajuda.
    Abraços,

  3. André Salvati says:

    Rafael,

    bem legais seus posts.

    Estou começando com esse trio (Ajax + Seam + Facelets) e gostaria de saber se há uma solução para os seguintes problemas em aplicações Ajax com uma só página:

    1) Acionamento dos botões Back/Forward do navegador.

    2) Navegação para uma conversação diferente na sessão do usuário.

    Vc já tratou essas duas questões com essas ferramentas?

    Grato.

  4. Raneves says:

    Rafael,

    a respeito do atributo immediate=”true”, com o seu uso pode-se dizer que existe um ganho de desempenho? porque alguns ciclos de vida serão pulados, então entendo que ficará mais rápido. está correto?

  5. Rafael Ponte says:

    Olá Raneves,

    Eu até que gostaria de confirmar isso para você, mas eu não posso e nem tenho certeza.

    A utilização do immediate=true difere quando você o utiliza para componentes de inputs (como h:inputText) e componentes como h:commandButton e h:commandLink.

    Na realidade não é que o immediate=true “pule” o ciclo de vida, ele apenas adianta as fases do ciclo, o que de maneira didática pode-se explicar como “pular”.

    Talvez ao utiliza-lo num h:command* você tenha algum ganho de performance pois toda (ou boa parte) da validação não é processada. Você pode entender mais sobre ele aqui http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html .

    Enfim, não posso te confirmar isso. Mas duvido que o ganho de performance seja de fato exorbitante ao ponto de sempre considerar o uso de immediate=true – levando em consideração que você não tenha um custom-validator bem custoso.

    Um abraço.

  6. Raneves says:

    obrigado pela resposta.
    Mas fica a dúvida, então pra que usar immediate=”true”?

  7. Rafael Ponte says:

    Existem cenários em que ele é se faz necessário, como por exemplo um botão “voltar” ou “cancelar” que precisa executar algo no servidor mas que não quer validar o formulário.

    Enfim, te aconselho a ler post que te passei anteriormente, com certeza ele vai te ajudar a entender o uso do immediate=true e do ciclo de vida do jsf (que por si só já é bem confuso).

3 Pings/Trackbacks for "Algumas boas práticas com JSF e Richfaces"
  1. [...] por falar em boas práticas, certamente uma das melhores práticas -e praticamente obrigatória- é a utilização de algum [...]

  2. [...] Eu fiquei impressionado com a gama de componentes disponíveis e a forma que os componentes do JBoss RichFaces permite-nos programar para WEB semelhante a uma aplicação Desktop. Outra sensação de está [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>