Problema ao tentar usar taglib <c:forEach> propriedade items
7 respostas
J
Jean_dos_Santos
Estou estudando uma apostila da Caleum de java web e estou com problema para começar a estudar a parte de JSTLl, mas quando tento escrever essa parte:
"<c:forEach var="contato" //nessa parte ==> items="dao.getLista">"
está dando erro:
[“items” does not support runtime expressions] quando tendo dessa forma --> items="${dao.lista}
e no console
[GRAVE: Servlet.service() for servlet [jsp] in context with path [/fj21-agenda] threw exception [javax.el.PropertyNotFoundException: Property ‘nome’ not found on type java.lang.String] with root cause]
Precisa colocar os jars (tanto da api quanto da implementação).
Você pode baixá-los aqui
Jederson_Andre
É como o @darlan_machado flw, deve ta faltando os JARS, vc deve colocalos dentro do diretorio web-inf/lib viu. tive esse problema esses dias.
J
Jean_dos_Santos
Mudei a pergunta porque resolvi essa parte.
só não tô conseguindo lista do bd ainda
darlan_machado
Você não pode referenciar um elemento de express language na propriedade items. Você também não pode referenciar um método.
Você, obrigatoriamente, precisa colocar os valores em um atributo de um objeto.
J
Jean_dos_Santos
??? Pode dar um exemplo? já tentei fazer de várias formas, mas não funfou.
darlan_machado
Eu cometi um equívoco no comentário anterior.
As versões mais novas da JSTL (1.2) deveriam aceitar o uso de EL como parâmetro da propriedade items.
Então:
Certifique-se de que está usando a taglib correta <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Garanta que você tenha colocado um atributo contendo a lista de itens a serem tratados em algum contexto (request, session, etc).
Garanta que o acesso ao objeto em questão está adequado (nome corresponde ao definido para o método getter)
Se está usando servlets + JSTL, esse exemplo está bem bacana.