JSTL - De novo

23 respostas
B

Pessoal,

Estou tentando utilizar JSTL em um projeto que estou fazendo com struts…

Tive alguns problemas até que decidi acessar a página de taglibs do jakarta e baixar os fontes de lá para ter certeza que os .jar que me passaram não estavam zicados ou algo assim…

Baixei o zip e coloquei no lib do meu projeto os arquivos jstl.jar e standard.jar

No meu WEB-INF ficam os tld’s:
c.tld
c-rt.tld
struts-logic.tld
struts-html.tld
.
.
.

Mas ainda assim o comando abaixo não funciona:

<c:out value="${listarUsuariosForm.status.allowInsertOperation}"/>

já tentei tb

<c:out value="${sessionScope.listarUsuariosForm.status.allowInsertOperation}"/>

e consequentemente(como isso é só um teste) o comando abaixo tb não funciona:

<c:if test=’${sessionScope.listarUsuariosForm.status.allowInsertOperation ==“1”}’>

Já tentei sem sessionScope, aspas simples, duplas, o escambal. E nada.

No caso do c:out ele escreve a expressão página ao invés de resolvê-la e mostrar o resultado.

Já me perguntaram em outro post se allowInsertOperation é do boolean. Não é. É String.

Alguém sabe o que pode estar acontecendo?

Outra coisa: Tem um struts-el.jar no meu lib. Eu realmente preciso dele ou apenas do standard.jar e do jstl.jar?

Obrigado.

23 Respostas

Luca

Olá

Seu post anterior igual a este teve 41 visualizações e poucas respostas. Você não precisava abrir um outro igual. Poderia apenas dar sequência ao outro.

Quanto à suas dúvida pergunto se nenhum dos links que te enviei fala alguma coisa sobre isto?

[]s
Luca

Guilherme_Silveira
  1. coloque a ultima versao da jstl e standar.jar no seu projeto, baixe no site do jakarta
  2. com essa versao voce nao precisa definir nada no seu web.xml
  3. va passo a passo:
    a) tente somente <c:out value="${listarUsuariosForm}"/>
    b) tente um pouco mais
    c) mais um pouco

E tente de pouco em pouco, assim voce acha o seu erro

Att

Guilherme Silveira

R

Como vc esta declarando as tglibs em seu jsp ???
Posta a pagina jsp!..se não for mto grande né!!!

B

Pelos links consegui entender melhor o que é jstl…

Foi daí que cheguei na página do jakarta e tal…

Mas pelo que li estou fazendo tudo certo. Já li os exemplos que vêm junto…

B

Declaro a taglib assim:

<%@ taglib uri="/tags/struts-c" prefix=“c” %>

uso assim:

<c:out value="${listarUsuariosForm.status.allowInsertOperation}"/>
				<c:if test='${sessionScope.listarUsuariosForm.status.allowInsertOperation =="1"}'>

e no web.xml coloquei isso:

/tags/struts-c /WEB-INF/c.tld
Guilherme_Silveira

sugestao: abandona o struts-taglibs e passa por jstl

B

Como assim? O jstl não é uma spec? E o struts taglib é uma implementação da spec, certo?

Qual jstl vc está dizendo para eu usar? Tem outro lugar onde posso fazer download? Por mim, sem problemas. Quero fazer esse troço rodar.

Valeu.

Guilherme_Silveira

Sim claro, a jstl eh uma especificacao, pela minha experiencia com JSTL, so baixo a implementacao no grupo jakarta diretamente para nao haver problemas, versao 1.1.2.

http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html

Att

Guilherme Silveira

B

Guilherme, acessei o site que vc me passou e cliquei em um link que levava para “Apache Jakarta Project Mirrors”.

Nesta outra pg tem duas seções: Release builds e Nightly Builds.

E dentro de cada seção tem vários tópicos, mas nada de jstl. Qual eu devo baixar? O único “familiar” que vi foi Tablibs, mas este eu já entrei hoje… E baixei o conteúdo da pasta standard-1.0.

É isso? Se não for me explique melhor. Valeu.

Guilherme_Silveira

http://ftp.pucpr.br/apache/jakarta/taglibs/standard/binaries/

Escolhe a 1.1.2

B

Cara, peguei a jstl 1.2 e nada…

Pelos testes que fiz descobri que ela tá sendo chamada, pq coloquei um c:if test=“true” e imprimiu o boby…

Mas ele não consegue acessar meu obj nem por reza!! Estava pensando se não pode ser um problema de cast, já que um objeto que volta da sessão volta como object. Será?

Guilherme_Silveira

usando jstl vc nao precisa se preocupar com casts.

eh melhor voce postar algumas coisas a mais do seu teste pq senao fica muito na ‘adivinhacao’

fcmartins

Experimente colocar:

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

Ao invés de:

<%@ taglib uri="/tags/struts-c" prefix="c" %>

Outra coisa, para usar ${xxx} Você tem que usar um servidor que suporte a especificação 1.4 do J2EE (Tomcat 5 p.e.). E no seu web.xml, no cabeçalho deve ter:

<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
Usando o J2EE 1.4 você não precisa mais dos arquivos .tld, só do standard.jar e do jstl.jar.
Mais uma coisa, Struts e JSTL são separados. O Struts tem as taglibs dele e o JSTL tem as deles. <c:out> faz parte das taglins do JSTL não do Struts.

B

Cara, vou checar quanto as informações do cabeçalho do meu web.xml.

Outra coisa: Estou utilizando o jboss 3.2.5. Alguém sabe qual tomcat vem nele? Talvez o tomcat dele não seja compatível com jstl…é uma hipótese.

Valeu

fcmartins

O seu problema não é o JSTL se o <c:if> está funcionando. O seu problema é com a EL ou Expression Language, esse é o nome do recurso ${objeto.propriedade} que você está usando. Ele só foi adicionado ao J2EE a a partir da especificação 1.4.

E o JBoss 3 não é compatível com a 1.4, somente a partir da versão 4.

fcmartins

Olhando no site do JBoss, diz que a versão 3.2.6 contém o Tomcat 5.0.28, então só testando mesmo.

B

Cara, mais uma vez obrigado. Neste fim de semana vou fazer o download e ler os manuais…

Obrigado mesmo. Minha “criatividade” para buscar o erro já tinha se esgotado…

Valeu.

NandoLoja

Cara tipo tava vendo o problema realmente é na EL por que as tags estão funcionando como já foi dito. So estou lembrando que tem dois tipos de tag libs uma que suporta a EL e outro que não suporta saca.
É a mesma tagLib so que não suporta EL da uma olhada nisso também se você não esta importando a jstl errada.

heheheheheheheheheh espero ter ajudado ae falow

B

Pessoal, consegui resolver meu problema

Precisei modificar(conforme dicas do pessoal) o cabeçalho do meu arquivo web.xml.

o início do arquivo ficou assim:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns=“http://java.sun.com/xml/ns/j2ee
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd”
version=“2.4”>

…E tudo está funcionando ok agora. Qto ao ambiente eu continuei com jboss 3.2.5 e levo no meu lib os arquivos struts-el.jar, jstl.jar e standard.jar.

Se alguém dia alguém bater cabeça igual a mim, fica a dica.

Abraço e obrigado a todos

W

Valeu pessoal. Eu ja estava alguns dias me batendo com esse mesmo problema e agora esta resolvido.

Valeuzzzzz mesmo.

Obrigado
Patrick Weege

vitorisaia

Pessoal, estou tendo o mesmo problema do Bjorg…

estou usando jstl 1.1, jboss 4.0.1 (tomcat 5.0.28) e java 5…

já chequei a versão do do web-xml, o cabeçalho está assim:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns=“http://java.sun.com/xml/ns/j2ee
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd”
version=“2.4”>

no meu jsp:

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

<c:if test="${!empty sessionScope.userHttpSessionDTO.postalBox}"> //nao ta imprimindo as coisas daqui de dentro

</c:if>

como pode se ver no comentario, ele nao esta imprimindo as coisas dali, como se o objeto nao estivesse na sessao (porem está, pq eu coloquei, la na action).

nao ta funcionando nem com logic:present…

ah, funcionava certinho no jboss 3.2.XX… mas agora nada!!

alguem tem alguma luz?!

valeu, abraços

fabianofrizzo

Galera desculpa recussitar este tópico mas não consigo fazer rodar EL com JSTL eu to precisando para fazer umas tabelas com DisplayTag

Abaixo segue alguns trechos de códigos

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	     xmlns="http://java.sun.com/xml/ns/javaee" 
	     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
	     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee" 
	     id="WebApp_ID" 
	     version="2.5">
taglib.jsp
<%@ page language="java" pageEncoding="ISO-8859-1" contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib uri="http://ajaxanywhere.sourceforge.net/" prefix="aa" %>

<%--@ taglib uri="http://acegisecurity.org/authz" prefix="authz" --%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display-el" %>

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

<%@ taglib uri="http://www.mentaframework.org/tags-mtw/" prefix="mtw" %>
Pagina com DisplayTag
<body>

<c:set var="gerar"><mtw:i18n key="grid.gerar"/></c:set>
<c:set var="data"><mtw:i18n key="pedido.pedData"/></c:set>
<c:set var="pedItens"><mtw:i18n key="pedido.itensPedido"/></c:set>

<form action="<c:url value="/PedidoAction.listAll.mtw"/>" method="post">

	<display:table name="listaPedidos" requestURI="/ProdutoAction.listAll.mtw" excludedParams="*" 
				   pagesize="15" export="false" htmlId="pedido" id="pedido" style="width:100%">
				   
		<display:column title="${gerar}" style="text-align:center">
			<mtw:input type="checkbox" name="pedGerado${pedido_rowNum}" extra="checked=${pedido.pedGerado}"/>
		</display:column>
		<display:column title="${data}" property="pedData" sortable="true" style="text-align:center" />
		
		<c:set var="nestedName" value="listaPedidos.item[${parent_rowNum -1}].subList" /> 
		  
		<display:column title="${pedItens}">  
   			<display:table name="${nestedName}" id="child${pedido_rowNum}"  class="simple sublist">
   				<display:column title="Teste" property="itpedQtde"/>
   			</display:table>
     	</display:column>  
     					    
	</display:table>

   
</form>
</body>

Muito Obrigado pela atenção de todos.

Mas não to mais conseguindo axar aonde estou errando...

fabianofrizzo

Bom dia galera..

Fiz umas modificações no pagina que ta usando JSTl com EL elas seguem abaixo

<display:table name="listaPedidos" requestURI="/ProdutoAction.listAll.mtw" excludedParams="*" 
				   pagesize="15" export="false" htmlId="pedido" id="pedido" style="width:100%">
				   
		<display:column title="${gerar}" style="text-align:center">
			<mtw:input type="checkbox" name="pedGerado${pedido_rowNum}" extra="checked=${pedido.pedGerado}"/>
		</display:column>
		<display:column title="${data}" property="pedData" sortable="true" style="text-align:center" />
		
		<c:set var="nestedName" value="${listaPedidos}.item[${pedido_rowNum-1}].subList" />
		  
		<display:column title="${pedItens}">  
   			<display:table name="${nestedName}" id="child${pedido_rowNum}"  class="simple sublist">
   				<display:column title="Teste" property="itpedQtde"/>
   			</display:table>
     	</display:column>  
     					    
	</display:table>

   <c:out value="${nestedName}"></c:out>

coloquei um c:out para ver o que estava jogando na variavel e olha o que joga

[beans.Pedido@7ce19278, beans.Pedido@7ce19297].item[1].subList

Ja tentei colocar o o nome da lista que esta dentro do bean Pedido para ver e da a mesma coisa

Mas se eu colocar nesse formato aqui

<c:set var="nestedName" value="listaPedidos.item[${pedido_rowNum-1}].subList" />

Ele da a seguinte MSG mesmo colocando o nome da lista que esta dentro do meu bean que seria itensPedido

java.lang.NoSuchMethodException: Unknown property 'item'

Alguém poderia me dar uma luz sobre esse negócio muito obrigado a todos

Criado 3 de fevereiro de 2005
Ultima resposta 6 de mai. de 2008
Respostas 23
Participantes 9