JSTL e <c:url...>

11 respostas
smorigo

Pessoal a algum tempo eu usei a seguinte tag do Struts para criar um link com parametro, fiz dessa maneira:

&lt;html:link paramId="codigoParceiro" paramName="lista" paramProperty="codigoParceiro" page="/editarParceiro.do"&gt;
   &lt;bean:write name="lista" property="codigoParceiro" /&gt;
&lt;/html:link&gt;

Estou tentando fazer a mesma coisa com JSTL e nada… :frowning:

&lt;c:forEach var="empresa" items="${listaEmpresas}"&gt;
	  &lt;tr&gt;
	  	&lt;td&gt;
	  		&lt;c:url value="/empresa.do" var="empresa"&gt;
				&lt;c:param name="codigo" value="${requestScope.codigo}" /&gt;
			&lt;/c:url&gt;    
			<a href='<c:out value="${empresa}"/>">Editar</a>    
		</td>
	    <td><c:out value="${empresa.codigo}"/></td>	
	    <td><c:out value="${empresa.razaoSocial}"/></td>	
	    <td><c:out value="${empresa.cnpj}"/></td>
	  </tr>
  </c:forEach>

alguém sabe me falar qual o meu erro ???

quero chamar a minha action passando o codigo da empresa…
'>

11 Respostas

jgbt

e qual o erro que ta dando??
posta o stack p/ facilitar a nossa ajuda.

[]'s

smorigo

Olha só o erro que está acontecendo:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Unable to find a value for "codigo" in object of class "java.lang.String" using operator "."
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspService(PesquisaEmpresa_jsp.java:105)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
	org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

javax.servlet.jsp.el.ELException: Unable to find a value for "codigo" in object of class "java.lang.String" using operator "."
	org.apache.commons.el.Logger.logError(Logger.java:481)
	org.apache.commons.el.Logger.logError(Logger.java:498)
	org.apache.commons.el.Logger.logError(Logger.java:611)
	org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:340)
	org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:899)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_out_1(PesquisaEmpresa_jsp.java:251)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_forEach_0(PesquisaEmpresa_jsp.java:140)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspService(PesquisaEmpresa_jsp.java:92)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
	org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28
Meu código está assim:
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;%@include file="Cabecalho.jsp"%&gt;
&lt;title&gt;Lista Empresas&lt;/title&gt;
&lt;/head&gt;


&lt;table width="500" border="0" cellspacing="0" cellpadding="0"&gt;
  &lt;tr&gt;
    &lt;td width="50"&gt;Teste&lt;/td&gt;
    &lt;td width="50"&gt;Codigo&lt;/td&gt;
    &lt;td width="250"&gt;Razao social&lt;/td&gt;
    &lt;td width="150"&gt;CNPJ/CPF&lt;/td&gt;
  &lt;/tr&gt;
  &lt;c:forEach var="empresa" items="${listaEmpresas}"&gt;
	  &lt;tr&gt;
	  	&lt;td&gt;
	  		&lt;c:url value="/empresa.do" var="empresa"&gt;
				&lt;c:param name="codigo" value="${requestScope.codigo}" /&gt;
			&lt;/c:url&gt;    
			<a href='<c:out value="${empresa}"/>">Editar</a>    
		</td>
	    <td><c:out value="${empresa.codigo}"/></td>	
	    <td><c:out value="${empresa.razaoSocial}"/></td>	
	    <td><c:out value="${empresa.cnpj}"/></td>
	  </tr>
  </c:forEach>
</table>


</body>
</html>
'>
smorigo

Pessoal alguém tem uma dica sobre o que deve estar acontecendo?
Obrigado…

mister_m

Está bem claro no stack trace. Não existe um atributo chamado codigo no request.

smorigo

mais entao esse codigo nao era para funcionar certo:

<c:out value="${empresa.codigo}"/>

mais está funcionando, ou estou falando besteira?

skill_ufmt

smorigo:
mais entao esse codigo nao era para funcionar certo:

<c:out value="${empresa.codigo}"/>

mais está funcionando, ou estou falando besteira?

já tentou por isso no trecho lá em cima

&lt;c:url value="/empresa.do" var="empresa"&gt;
 				&lt;c:param name="codigo" value="${empresa.codigo}" /&gt;
 			&lt;/c:url&gt;
smorigo

Olha só fiz da maneira que você posto e a mensagem que eu recebo é a seguinte:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Unable to find a value for "codigo" in object of class "java.lang.String" using operator "."
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspService(PesquisaEmpresa_jsp.java:105)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
	org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

javax.servlet.jsp.el.ELException: Unable to find a value for "codigo" in object of class "java.lang.String" using operator "."
	org.apache.commons.el.Logger.logError(Logger.java:481)
	org.apache.commons.el.Logger.logError(Logger.java:498)
	org.apache.commons.el.Logger.logError(Logger.java:611)
	org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:340)
	org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:899)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_out_0(PesquisaEmpresa_jsp.java:231)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_forEach_0(PesquisaEmpresa_jsp.java:136)
	org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspService(PesquisaEmpresa_jsp.java:92)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
	org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28

Esse meu “codigo” é do tipo Int mais acho que isso nao iria atrapalhar…

mister_m

Novamente, o erro é claro:

smorigo:
javax.servlet.ServletException: Unable to find a value for “codigo” in object of class “java.lang.String” using operator “.”

// editado

org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_out_0(PesquisaEmpresa_jsp.java:231)

org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspx_meth_c_forEach_0(PesquisaEmpresa_jsp.java:136)

org.apache.jsp.paginas.PesquisaEmpresa_jsp._jspService(PesquisaEmpresa_jsp.java:92)

</blockquote>

O objeto no qual você está acessando codigo é uma String e não o que você pensa que ele é. Uma pergunta besta: a página que emite o erro é /paginas/PesquisaEmpresa.jsp?

rodrigo_ctba

conseguiu resolver…

Estou com um problema semelhante, no entanto as variáveis do bean não são populadas.

<c:url value="/empresa.do" var="empresa">
	<c:param name="codigo" value="${empresa.codigo}" />
</c:url>

O TOMCAT não processa em tempo real isso… ${empresa.codigo} ?

No JBOSS funciona !

C

Rodrigo, deve ser questão da versão do Servlet Container.

marciorodr0

usa c:out, se não me engano EL assim direto não tem em algumas versões mais antigas do tomcat

[]'s

Criado 5 de abril de 2005
Ultima resposta 30 de jun. de 2009
Respostas 11
Participantes 7