olá tudo bem?
Eu não estou conseguindo usar o <c:forEach> em um JSP com o vraptor.
Estou fazendo aquela loja virtual da apostila f278 da caelum. fiz exatamente como na apostila mais tem alguma coisa errada!!
este é meu Jsp que faz uso da <c:forEach>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<%@ include file="../menu.jsp" %>
<h1>Cadastro de musica</h1>
<form action="musica.armazena.logic" method="post">
<input type="hidden" name="musica.id" value="${musica.id}"/>
CD:
<select name="musica.cd.id">
<c:forEach var="cd" items="${listaCds}">
<option value="${cd.id}"
<c:if test="${musica.cd.id == cd.id}">selected="true"</c:if>
>
${cd.titulo}
</option>
</c:forEach>
</select>
Titulo
<input type="text" name="musica.titulo" value="${musica.titulo}"/>
Preco
<input type="text" name="musica.preco" value="${musica.preco}"/>
<input type="submit"/>
</form>
</body>
</html>
e esta minha lógica que o jsp deveria acessar!!
@Component("musica")
@InterceptedBy(DaoInterceptor.class)
public class MusicaLogic {
private final DaoFactory daoFactory;
private Musica musica;
private List<Musica> musicas;
public MusicaLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
// formulario para adicao
public void formulario() {
}
// formulario para edicao
public void editar(Musica musica) {
// carrega os dados no banco para edicao
this.musica = this.daoFactory.getMusicaDao()
.procura(musica.getId());
}
// Adiciona uma musica nova ou atualiza se for edicao
public void armazena(Musica musica) {
this.daoFactory.beginTransaction();
this.daoFactory.getMusicaDao().atualiza(musica);
this.daoFactory.commit();
}
// remove uma musica
public void remove(Musica musica) {
this.daoFactory.beginTransaction();
this.daoFactory.getMusicaDao().remove(musica);
this.daoFactory.commit();
}
// lista todas as musicas
public void lista() {
this.musicas = this.daoFactory.getMusicaDao().listaTudo();
}
// getter pra musica
public Musica getMusica() {
return musica;
}
// getter pra lista de musicas
public List<Musica> getMusicas() {
return musicas;
}
// metodo usado para popular o select
public List<Cd> getListaCds() {
return this.daoFactory.getCdDao().listaTudo();
}
}
A tag <c:forEach> deveria usar a List cds para pegar os nomes de todos os cd que tem no banco, mas acontece esse erro aqui!!
javax.servlet.ServletException: /musica/formulario.ok.jsp(18,3) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:87)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
javax.servlet.ServletException: /musica/formulario.ok.jsp(18,3) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:87)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Eu estou iniciando em vraptor então não sei se o que está causando erro! vocês podem me ajudar??