Erro na JSP quando tenta "zebrar" uma tabela usando JSTL

4 respostas
I

Boa tarde amigos,

Estou tentando zebrar uma tabela no JSP usando JSTL, mas está apresentando erro. Segui o exemplo que achei aqui no forum mas não funfa. Lembrando que sem tentar zebrar, funfa sem problemas. O que pode ser amigos?

Exemplo:

<table>  
     <c:forEach items="${suaLista}" var="linha" varStatus="i">  
         <c:choose>  
             <c:when test="${i.count % 2 == 0}">  
                 <tr bgColor="#CC0000"> <%-- Use styles... fica melhor... --%>  
             </c:when>  
             <c:otherwise>  
                 <tr bgColor="#0000CC">  
             </c:otherwise>  
   
             <td>${linha.atributo1}</td>  
             <td>${linha.atributo2}</td>  
             <td>${linha.atributo3}</td>  
   
             </tr> 
   
         </c:choose>  
     </c:forEach>  
 </table>

Minha JSP:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>

<table>
	<c:forEach items="${lFornecedor}" var="fornecedor" varStatus="i">
			<c:choose>
             		<c:when test="${i.count % 2 == 0}">  
				<tr bgColor="#CC0000">
			</c:when>
				<c:otherwise> 
					<tr bgColor="#0000CC">
				</c:otherwise>
					<td>${fornecedor.razaoSocial}</td> 				
				        <td>${fornecedor.cnpj}</td>
			    </tr>
			  </c:choose>
	</c:forEach>
</table>

Erro:

javax.servlet.ServletException: <h3>Validation error messages from TagLibraryValidator for c</h3><p>72: Illegal text inside "c:choose" tag: "<td>...".</p><p>72: Illegal text inside "c:choose" tag: "${forne...".</p><p>72: Illegal text inside "c:choose" tag: "</td>...".</p><p>72: Illegal text inside "c:choose" tag: "<td>...".</p><p>72: Illegal text inside "c:choose" tag: "${forne...".</p><p>72: Illegal text inside "c:choose" tag: "</td>...".</p><p>72: Illegal text inside "c:choose" tag: "</tr>...".</p>
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

org.apache.jasper.JasperException: <h3>Validation error messages from TagLibraryValidator for c</h3><p>72: Illegal text inside "c:choose" tag: "<td>...".</p><p>72: Illegal text inside "c:choose" tag: "${forne...".</p><p>72: Illegal text inside "c:choose" tag: "</td>...".</p><p>72: Illegal text inside "c:choose" tag: "<td>...".</p><p>72: Illegal text inside "c:choose" tag: "${forne...".</p><p>72: Illegal text inside "c:choose" tag: "</td>...".</p><p>72: Illegal text inside "c:choose" tag: "</tr>...".</p>
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:72)
	org.apache.jasper.compiler.Validator.validateXmlView(Validator.java:1549)
	org.apache.jasper.compiler.Validator.validate(Validator.java:1495)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:157)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

4 Respostas

rubinelli
Tente mover o para a linha 16:
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>

<table>
	<c:forEach items="${lFornecedor}" var="fornecedor" varStatus="i">
			<c:choose>
             		<c:when test="${i.count % 2 == 0}">  
				<tr bgColor="#CC0000">
			</c:when>
				<c:otherwise> 
					<tr bgColor="#0000CC">
				</c:otherwise>
			  </c:choose>
					<td>${fornecedor.razaoSocial}</td> 				
				        <td>${fornecedor.cnpj}</td>
			    </tr>

	</c:forEach>
</table>

Pela mensagem de erro, ele não estava esperando nada além das tags c:when e c:otherwise dentro do c:choose.

kissdemon

http://displaytag.sourceforge.net/

[]´s

Carlos

leandrocm86

Cara, tira a parte das colunas (TD) de dentro do c:choose… deixa soh o c:when e o c:otherwise lá…
Acho que é isso

E pra quem tá mexendo com JSTL, sempre aconselho isso


Leitura rápida, fácil e agradável… Me ajudou muito quando comecei com JSTL

I

Vlw amigos… to testando todas as sugestões aqui…

Obrigado!

Criado 4 de novembro de 2008
Ultima resposta 5 de nov. de 2008
Respostas 4
Participantes 4