Posts Tagged ‘JBoss’

Estendendo JSF EL com JBoss EL

Thursday, October 23rd, 2008

Uma das features que faz falta na JSF EL (Unified EL) é a não possibilidade de executar métodos sobre um objeto qualquer ou mesmo passar parâmetros para um método, isto é, não é possível por exemplo se utilizar de uma EL como #{managedBean.list.size()} ou #{managedBean.addSomeThing(row)}.

Enfim, atualmente a especificação nos limita apenas a obter propriedades de um objeto através de getters e setters ou obter os elementos de um map pelo nome. Contudo o pessoal da JBoss estendeu a JSF EL criando a JBoss EL -que hoje é utilizada no JBoss Seam- que traz diversas melhorias na expressividade e poder da expression language, entre elas a comentada um pouco acima.

Instalando

A instalação e configuração da JBoss EL no seu projeto é muito simples, e o melhor, não se faz necessário a instalação do JBoss Seam.

O primeiro passo é baixar a implementação da JBoss EL e então adicioná-la ao classpath (/WEB-INF/lib/) da sua aplicação, depois disso basta apenas adicionar um parâmetro de contexto no web.xml da aplicação para usar a lib:


com.sun.faces.expressionFactory
org.jboss.el.ExpressionFactoryImpl

Pronto! Você já pode se utilizar da JBoss EL para executar métodos e passar parâmetros para estes métodos quando necessário.

Features

O extensão traz diversas features interessantes e bastante utéis no nosso dia a dia, entre elas a já comentada passagem de parâmetros:


Podemos também escrever expressões como abaixo:


Bacana, não? Então o que vocês acham da feature a seguir?

Uma das features mais interessantes é a projection. Com ela é possível iterar coleções (list, set etc) de objetos de maneira simples através de sub-expressões, e o melhor, é possível iterar coleções aninhadas, algo realmente prático quando não se deseja escrever muito código nos managed beans.

Com a sintaxe de projections podemos fazer algo tão simples quanto:

#{company.departments.{d|d.name}}

Ou podemos ir mais longe com:

#{company.departments.{d|d.employees.{emp|emp.lastName}}}

É importante ressaltar que esta sintaxe não pode ser utilizada diretamente nas páginas (xhtml ou jsp) pois tanto Facelets quanto JSP não conseguem interpretá-la.

Limitações

Existem algumas limitações que se deve ficar atento, porém não é nada de outro mundo.

Eu particularmente considero a não compatibilidade com JSP 2.1 (isso mesmo, ela é compatível apenas com JSP 2.0) como a principal e a mais crítica da extensão, pois nem todas as aplicações com JSF 1.2 se utilizam de Facelets, mas deveriam, pois já é sabido de todos que qualquer aplicação séria desenvolvida em Jsf deveria utilizar-se de Facelets.

Então se você quer utilizar essa extensão com JSF 1.2 você deverá utilizar Facelets querendo ou não.

Concluindo

Aproveitem a extensão, evitem as gambiarras e as tentativas deploráveis de passagens de parâmetros utilizadas hoje em dia. A instalação da extensão é simples, a utilização é mais simples ainda, e o melhor de tudo é que há grandes possibilidade de fazer parte da JSR 314.

A extensão só tem a melhorar (versões futuras já estão sendo implementadas), principalmente em relação a sintaxe de projections (que poderá mudar em breve), possibilitando assim uma maior manipulação de coleções nas páginas.

Enfim, se seu projeto se utiliza de JSF 1.2 e você pretende utilizar a JBoss EL você já pode aproveitar e migrar suas páginas para Facelets, no final você e sua aplicação só tem a ganhar.

Richfaces 3.2 lançado!

Monday, March 31st, 2008

Ontem, 31 de Março de 2008, foi lançado a versão 3.2 do Richfaces, com algumas melhorias internas e principalmente novos componentes ricos. Entre os novos componentes o mais esperado sem sombra de dúvidas era o file-upload, alias, multiple-file-upload, certo! :)

Richfaces File Upload

Outros componentes bem bacanas e ricos também foram lançados como:

Pessoal da JBoss está investindo pesado no Richfaces/Ajax4jsf, para falar a verdade ele é o melhor conjunto de componentes ricos para JSF que na minha opinião e na opinião de muitos outros desenvolvedores da lista de discussão JavaSF. Ele é bem estável, compatível com diversos outros conjuntos de componentes, absolutamente simples e com grande suporte da comunidade.

Acho que a única coisa que não ficou legal nessa release é que ela funciona somente com JSF 1.2, ou seja, ela não é mais compatível com a versão 1.1 da especificação. Enfim, era de se esperar, uma hora JSF 1.1 será legado (ou já não é?), migrar uma aplicação de JSF 1.1 para JSF 1.2 é bem simples, continuar com JSF 1.1 é abrir mão de muitas features e componentes oferecidos por alguns frameworks e conjunto de componentes.

Demo dos componentes,
http://livedemo.exadel.com/richfaces-demo/index.jsp

Mais informações sobre a release,
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=132562