${EL.parte1}
fevereiro 7, 2007 às 10:05 am | Publicado em JEE | 8 ComentáriosA Expression Language ou simplesmente EL foi adicionada na especificação 2.0 da JSP, e sem dúvida facilitou muito a vida de todos nós. O código na JSP ficou mais simples e ainda nos livramos dos malditos scriplets.
Em uma série de posts, abordarei alguns tópicos que considero importante sobre as EL`s.
Operador ponto (.) :
Este operador possui algumas restrições de uso. A primeira variável de EL deve ser um Map, um atributo ou um objeto implícito. A segunda variável deve ser uma propriedade do bean ou uma chave do Map e deve obedecer o padrão de nomenclatura de variáveis do java (não iniciar com número, etc…). Ex:
${pessoa.nome} – ${map.chave} – ${requestScope.pessoa.nome}
${pessoa.1} // não funciona pois não obedece o padrão de nomenclatura
E se a chave de seu Map for um número ( ${meuMap.2} ) ou ainda o pacote de uma classe, por exemplo “br.com.servlet” (${meuMap.br.com.servlet}). Viu que problemão? Já vimos que o operador . espera do seu lado direito uma propriedade ou chave de um Map que obedeça a regra de nomenclatura de variáveis.
Eis que surge o operador [ ]:
Este operador é mais poderoso e flexível. A variável à esquerda também pode ser um List ou um array de qualquer tipo. A variável à esquerda pode ser um número ou qualquer ainda qualquer valor que não respeite as regras de nomenclatura do java. Veja exemplos do operador [ ]:
${pessoa[“nome”]} = ${pessoa.nome}
${map[“chave”]} = ${map.chave}
${map[“br.com.servlet”]} // agora funciona
${minhaLista[“1”]} // agora funciona, porém…
Quando se utiliza [] e variável do lado esquerdo (“minhaLista”) for um array ou lista, tudo que se coloca dentro do [ ] é convertido para um inteiro, ou seja, isso não funciona:
${minhaLista[“posicaoDois”]}
O compilador da jsp não conseguirá converter “posicaoDois” para um inteiro e lançará uma bonita exceção. Já isto funciona:
${minhaLista[1]} // sem aspas ” “.
como já explicado, minhaLista é um List, portanto java irá converter o que estiver dentro dos [ ] para um inteiro. Você só está ajudando um pouco o compilador passando um inteiro e não uma string.
Se variável do lado esquerdo for um Map, existe outra reqra para uso do operador []. Veja a diferença.
${meuMap[“chave”]}
${meuMap[chave]}
Percebeu? a segunda EL o valor dentro dos colchetes não está dentro de ” “. Neste caso o container buscará nos escopos um atributo com este nome. Por exemplo, imagine esta jsp:
<% request.setAttribute(“chave”, “minhaChave”)%>
${meuMap[chave]}
Percebeu a diferença? Esta EL será traduzida para ${meuMap[“minhaChave”]}.
—————————–
A EL é bastante poderosa e conhecê-la profundamente é importantíssimo para os desenvolvedores JEE. Deixe seu comentário.
8 Comentários »
RSS feed for comments on this post. TrackBack URI
Deixar mensagem para Evandro Rosa Cancelar resposta
Crie um website ou blog gratuito no WordPress.com.
Entries e comentários feeds.
esquisitamente legal o seu artigo, muito bom… trabalhamos muito com EL mas sempre há detalhes que não percebemos, e na hora H perdemos um tempão tentando descobrir do que se trata.
maneiro… MANE TONTO LEGAL
Comment by Esquisito— fevereiro 7, 2007 #
O trecho em que você usa scriptlet:
Poderia set escrito usando JSTL:
Comment by Rafael U. C. Afonso— fevereiro 8, 2007 #
CORREÇÃO:
O trecho em que você usa scriptlet:
Poderia set escrito usando JSTL:
Comment by Rafael U. C. Afonso— fevereiro 8, 2007 #
[…] VRaptor não possui um pacote de taglib. Use expression language + JSTL e seja […]
Pingback by Vantagens do VRaptor « Marcelo Madeira— maio 12, 2007 #
Muito bom o Post Marcelo.
[ adicionado nos favoritos ]
Comment by Alexandre Ferreira— setembro 28, 2007 #
Existiu as outras partes sobre o EL?
So achei a parte 1
Comment by Alexandre Ferreira— setembro 28, 2007 #
Olá Alexandre.
A parte 2 está aqui:
Espero que goste também.
Comment by Marcelo Madeira— setembro 28, 2007 #
Muito bom seu post. Ajudou bastante.
Comment by Evandro Rosa— fevereiro 12, 2008 #