Galera, pra quem vai tirar (ou não) a certificação SCWCD 5.0, um dos objetivos do exame é saber se o candidato sabe criar funções com EL (Expression Language) para serem usadas em suas páginas JSP. A criação de funções EL serve para que você pense duas vezes antes de usar os malditos scriptlets em suas páginas JSP (sério, não faça isso por favor).
O processo envolve basicamente quatro passos:
- Criação de uma classe Java que conterá os métodos que você irá utilizar nas suas páginas JSPs.
- Criação do arquivo tld (Tag library descriptor) que conterá o mapeamento entre o método Java e sua versão XML.
- Mapeamento da sua tld no web.xml (isso é opcional... mas é legal utilizar)
- Declaração da taglib na sua página JSP.
Passo 1: Vamos criar uma classe chamada functions.MyMath e nela vamos criar um método square que será responsável pelo cálculo da raiz quadrada. Precisamos de alguns cuidados neste momento. A especificação diz que esta classe deve ser pública e os métodos que serão acessados pelas páginas JSPs devem ser públicos e estáticos. Dito isto, vejamos como ficou a nossa classe:
Passo 2: Vamo criar o arquivo tld. Este arquivo permitirá o mapeamento entre o nosso método java uma função XML que a EL possa executar (EL não permite a invocação de métodos Java). Uma observação importante é que caso o arquivo tld esteja sobre o diretório WEB-INF da sua aplicação ele é automaticamente reconhecido por ela, caso esteja em outro lugar você terá que fazer o passo seguinte.
Eu odeio quando as coisas não seguem um padrão nesses malditos arquivos xml... deixando a ira de lado, notem que o atributo que mapeia o nome da função não é function-name (o que faria muito mais sentido) e sim name, ele será usado para chamar de fato o nosso método java, você não precisa colocar o mesmo nome do método, mas fica melhor dessa forma. Outras dicas importantes são que em function-class deve ser colocado o nome completo da classe (com o pacote, conhecido como full qualified name) e em function-signature os tipos do retorno e da entrada devem ser também completos. Você pode usar todos os tipos básicos de Java e incluindo os wrappers sem necessidade de importação nas páginas JSP, caso não seja um desses tipos você terá que fazer a importação.
Passo 3: Este passo é opcional caso o seu arquivo tld esteja sobre o diretório /WEB-INF da aplicação, mas eu recomendo fortemente que você o faça. Por quê? Bem, digamos que um belo dia você resolve mover ou mudar o nome do arquivo... imagine só ter que sair alterando todas as páginas JSPs que fazem uso do arquivo... chato né? Então largue a preguiça de lado e coloque o conteúdo abaixo no arquivo web.xml:
Passo 4: Por fim precisamos declarar nossa função na página na qual desejamos chamá-la. O processo é bastante simples, principalmente se você já tiver utilizado JSTL. Vejamos como fica a nossa página JSP:
Se você fez tudo direitinho, ao executar a página acima será exibida a mensagem "A raiz quadrada de 25 é 5.0". Uma última coisa a dizer é sobre o argumento uri, apesar de ele está no formato absoluto (com protocolo etc) isto não significa que a JSP irá tentar acessar este endereço, apenas ela irá procurar no descritor (web.xml) se alguma taglib declarada ali combina com esta uri informada).
Bom galera, isso é tudo! Espero que tenham gostado da dica e até o próximo post!
Nenhum comentário:
Postar um comentário