Conheça novidades dos novos JSF 1.2 e JSP 2.1, que enfocam a integração entre as tecnologias – num esforço conjunto para o J2EE 5.0
Quando o JCP publicou a versão final da especificação do JSP 2.0 (JSR-152) em novembro de 2003 (e depois de quase um ano e meio de trabalho) o JavaServer Faces 1.0 ainda estava sendo definido. O resultado é que as duas especificações acabaram nascendo bastante isoladas. Quem já experimentou o JSF além do básico, provavelmente já sentiu alguns problemas causados por inconsistências ou incompatibilidades entre as duas especificações.
O objetivo deste pequeno artigo é mostrar o que está sendo feito no JSR-245 (JSP 2.1) e no JSR-252 (JSF 1.2) para unificar as tecnologias de desenvolvimento web em tempo para o J2Ee 5.0.
Linguagem de expressões unificadas
Como o JSP 1.2 não tinha uma linguagem de expressões (EL) integrada, e a EL do JSP 2.0 não atendia às necessidades do JSF, uma nova linguagem de expressões precisou ser desenvolvida para o JSF 1.0. Com isso, embora tivesse se tentado manter as duas Els o mais próximas possível, terminaram surgindo diferenças significativas.
Por exemplo, seria natural pensar que o código JSF da Listagem 1 imprimisse duas vezes a mensagem “Olá Mundo”. Mas isso não acontece. A variável str está no escopo da página, mas como o JSF é independente do JSP, esse escopo é ignorado, pois ele pode não existir em outras tecnologias que suportem o JSF. Assim a segunda mensagem não é exibida.
O principal objetivo do JSP 2.1 é o desenvolvimento de uma EL que seja, ao mesmo tempo, extensível e que atenda às necessidades do JSF. A especificação desta EL está sendo feita, com o apoio do grupo de especialistas do JSF 1.2, em um documento separado do restante da especificação do novo JSP.
As mudanças mais importantes (em andamento) são:
• Criação do novo pacote javax.el. A API de EL do JSF (javax.faces.el) se tornará deprecated, em virtude da nova API unificada.
• A linguagem de expressões será independente de quem irá interpretá-la; a interpretação pode ser feita pelo próprio JSP, pelo JSF, ou por um interpretador (resolver) customizado. Por exemplo, poderemos criar um novo interpretador de expressões criando uma subclasse de
...