Você está na página 1de 3

EL.

parte | Resultados da pesquisa | Marcelo Madeira

https://celodemelo.wordpress.com/?s=EL.parte

Marcelo Madeira

${EL.parte2}
fevereiro 10, 2007 s 12:55 pm | Publicado em JEE | 2 Comentrios
Continuando o post sobre a Expression Language, devemos prestar ateno em outro detalhe
importante: objetos implcitos.
Os objetos implcitos da EL, assim como os da JSP, facilitam o acesso s propriedades ou mtodos de
objetos que podem estar em diferentes escopos da aplicao.
param e paramValues: Map com os parmetros da requisio.
header e headerValues: Map com os cabealhos da requisio.
cookie: Map com os cookies da requisio.
initParam: Map com os parmetros init do contexto.
pageScope, requestScope, sessionScope, applicationScope: Map com os atributos dos
escopos.
Exemplos de uso dos objetos implcitos:
${param.nome}
${paramValues.cidades[1]}
${header.host} ou ${header[host]} vimos a diferena na primeira parte do tutorial
${requestScope.pessoa.nome} recupera o nome do objeto pessoa que est na requisio
E se voc quiser obter o mtodo utilizado na requisio HTTP (GET, POST, etc). Precisamos
invocar o mtodo getMethod() do objeto request . Ento podemos utilizar o objeto implcito
requestScope para recuperar o mtodo.
${requestScope.method}
Ops Porque no funcionou? Lembre-se que requestScope um map com os atributos da
requisio. apenas um Map com os atributos Voc no tem acesso s propriedades da requisio.
Eis que surge o objeto implcito pageContext. Este o nico objeto implcito que no um Map.
Atravs do pageContext podemos recuperar o objeto request:
${pageContext.request.method}
Outro ponto importante a ordem em que o container procura por atributos nos diferentes escopos.
Caso voc no informe um escopo, a ordem ser pageScope, requestScope, sessionScope e
applicationScope.

1 de 3

20/05/2016 16:16

EL.parte | Resultados da pesquisa | Marcelo Madeira

https://celodemelo.wordpress.com/?s=EL.parte

ex:
em um servlet:
request.setAribute(nome, marcelo);
session.setAribute(nome, maria);
na jsp:
${requestScope.nome} Marcelo //o atributo da requisio
${sessionScope.nome} -Maria // o atributo da sesso
${nome} Marcelo // o atributo da requisio?
Se voc no informar o escopo, o container primeiro procura pelo atributo nome no pageScope, se
no encontrar nada, ele busca no requestScope. No exemplo, ele encontrou a propriedade no
requestScope, ento ele para a busca pelo atributo e imprime o atributo da requisio. Portanto, em
alguns casos pode ser muito til informar o escopo do atributo.
Comentem.

${EL.parte1}
fevereiro 7, 2007 s 10:05 am | Publicado em JEE | 8 Comentrios
A Expression Language ou simplesmente EL foi adicionada na especicao 2.0 da JSP, e sem dvida
facilitou muito a vida de todos ns. O cdigo na JSP cou mais simples e ainda nos livramos dos
malditos scriplets.
Em uma srie de posts, abordarei alguns tpicos que considero importante sobre as EL`s.
Operador ponto (.) :
Este operador possui algumas restries de uso. A primeira varivel de EL deve ser um Map, um
atributo ou um objeto implcito. A segunda varivel deve ser uma propriedade do bean ou uma
chave do Map e deve obedecer o padro de nomenclatura de variveis do java (no iniciar com
nmero, etc). Ex:
${pessoa.nome} ${map.chave} ${requestScope.pessoa.nome}
${pessoa.1} // no funciona pois no obedece o padro de nomenclatura
E se a chave de seu Map for um nmero ( ${meuMap.2} ) ou ainda o pacote de uma classe, por
exemplo br.com.servlet (${meuMap.br.com.servlet}). Viu que problemo? J vimos que o operador
. espera do seu lado direito uma propriedade ou chave de um Map que obedea a regra de
nomenclatura de variveis.
Eis que surge o operador [ ]:
Este operador mais poderoso e exvel. A varivel esquerda tambm pode ser um List ou um

2 de 3

20/05/2016 16:16

EL.parte | Resultados da pesquisa | Marcelo Madeira

3 de 3

https://celodemelo.wordpress.com/?s=EL.parte

array de qualquer tipo. A varivel esquerda pode ser um nmero ou qualquer ainda qualquer valor
que no 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, porm
Quando se utiliza [] e varivel do lado esquerdo (minhaLista) for um array ou lista, tudo que se
coloca dentro do [ ] convertido para um inteiro, ou seja, isso no funciona:
${minhaLista[posicaoDois]}
O compilador da jsp no conseguir converter posicaoDois para um inteiro e lanar uma bonita
exceo. 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 no uma string.
Se varivel do lado esquerdo for um Map, existe outra reqra para uso do operador []. Veja a
diferena.
${meuMap[chave]}
${meuMap[chave]}
Percebeu? a segunda EL o valor dentro dos colchetes no est dentro de . Neste caso o container
buscar nos escopos um atributo com este nome. Por exemplo, imagine esta jsp:
<% request.setAribute(chave, minhaChave)%>
${meuMap[chave]}
Percebeu a diferena? Esta EL ser traduzida para ${meuMap[minhaChave]}.

A EL bastante poderosa e conhec-la profundamente importantssimo para os desenvolvedores


JEE. Deixe seu comentrio.
BLOG NO WORDPRESS.COM. | O TEMA POOL.
ENTRIES E COMENTRIOS FEEDS.

20/05/2016 16:16

Você também pode gostar