JSP Expression Language sem c:out [resolvido]

12 respostas
saoj

Eu só conheço isso:

<h1><c:out value="${user.username}" /></h1>

Seria legal se eu pudesse fazer isso na minha página JSP:

<h1>${user.username}</h1>

Perguntas:

  1. É possível fazer isso com JSP?

  2. Alguém já fez isso com JSP?

  3. Caso positivo, como se faz isso?

12 Respostas

Mauricio_Linhares

Eu faço :lol:

Você já tentou colocar o objeto com um atributo no request e depois tentar acessar?

saoj

Quando eu faço:

<h1>${user.username}</h1>

Aparece isso no meu browser:

${user.username}

ou seja, ele nao está interpretando nada.

Maurício, tem certeza que vc nao está confundindo JSP EL com Velocity?

C
<h1>${user.username}</h1>

Se não me ingano para que isto funcione você deve colocar o objeto “user” no request ou em qualquer outro escopo.

luiz_ross
Isso só funciona na jsp 2.0 e em containers que aceitem a mesma que saiba
saoj

Vou checar essas sugestoes…

Mas pessoal, vcs tem certeza que já viram isso funcionando em algum lugar ??? Vcs não estao confundindo JSP EL com Velocity?

Z

Sim. Bem aqui na minha frente, na minha máquina. :smiley:

saoj

Putz, que enrolado isso.

Bom, descobri que colocando:

&lt;%@ page isELIgnored="false" %&gt;

a linha:

&lt;h1&gt;${user.username}&lt;/h1&gt;

Funciona!!!

mas todas as tags do JSTL que tentam receber uma EL como atributo, ex:

&lt;c:out value="${user.username}" /&gt;

ou

&lt;c:forEach items="${user.friends}"&gt;
&lt;h1&gt;blablabla&lt;/h1&gt;
&lt;/c:forEach&gt;

não funcionam mais e lançam o seguinte erro:

According to TLD or attribute directive in tag file, attribute items does not accept any expressions.

Ou seja, isso é uma enrolação só… :?

É isso mesmo, ou tem mais alguma coisa escondida por aí… (adoro essas coisas simples de usar e entender… :cry: )

saoj

Consegui !!!

Basicamente eu estava usando isso:

<%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c” %>

que deve estar apontando para o JSTL 1.0

o certo é isso:

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

que acho que aponta para o JSTL 1.1.

Usando isso:

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

tem que botar obrigatoriamente o:

<%@ page isELIgnored=“false” %>

Se não todas as EL são ignoradas, fora e dentro dos tags.

Seria melhor se o padrão fosse true, né?

Bom, entendi essa bagunça. Agradeço a todos que ajudaram. :wink:

roberto.amorim

estou com um problema parecido, eu possuo a seguinte taglib:
<%@ taglib uri=“http://www.minhaempresa.com.br/portal/tags/periodoAgendado” prefix=“periodoAgendado”%>

no momento do uso eu construo o código:
<c:forEach items="${requestScope.pesquisasAgendadas}" var=“pesquisa”>
<periodoAgendado:exibeDescricao dataInicial="${pesquisa.divulgacao.dataInicioVigencia}" …

neste momento eu não consigo compilar pois a minha IDE retorna o seguinte erro:
“idioma de expressão não suportado no atributo dataInicial durante a compilação”

este é um erro da minha IDE, pois não estou conseguindo resolver o EL. eu fiz um teste substituindo o “${pesquisa…}” por uma data simples, como > “01/01/2008”. e deu certo.
Como fazer o compilador resolver esta expressão?

Leozin

Alô câmbio :stuck_out_tongue:

No TLD que fala da tua tag, você tem que colocar a seguinte propriedade rtexpvalue igual a true (para aceitar expressões EL):

No teu caso, deve estar assim:

<attribute> <name>dataInicial</name> <required>false</required> <!-- Ou false, se esse campo não for obrigatório --> <rtexpvalue>true</rtexpvalue> </attribute>

Ve se funciona ae =D

F

Cara… tem que ver se o EL está habilitado em seu container… acho que só em versões mais novas já vem esse recurso habilitado.

De qualquer forma tente colocar o código abaixo no seu jsp.
<%@ page isELIgnored=“false” %>

Valeu.

F

Cara funciona perfeitamente, e não é velocity não…

<c:out value="${user.username}"/>

${user.username}

embora eu prefira usar a opção de cima por motivos de legibilidade, a de baixo também funciona.

Criado 6 de julho de 2005
Ultima resposta 6 de jul. de 2005
Respostas 12
Participantes 8