Dúvida iniciante VRaptor

Salve a todos…
Acho q essa minha dúvida já deve ter sido discutida, mas não sei ao certo o q devo fazer e o que procurar.

Seguinte!

Tenho dois Controller com os seus respectivos Beans: PerfisController e UsuariosController

Estou fazendo o include do usuário e no formulário eu quero o select (combo box) dos Perfis cadastrados.

Dentro do meu método formulário() eu tenho:

@Path("/usuarios/novo") public void formulario() { ArrayList<Perfil> listaPerfil = new ArrayList<Perfil>(); listaPerfil = (ArrayList<Perfil>) perfilDao.list(); result.include("perfis", listaPerfil); }

No JSP formulário eu tento recuperar essa lista de Perfis.

<select name="usuario.perfil" class="campo" id="perfilid"> <c:forEach items="perfis" var="perfil" > <option value="${perfil.id}">${perfil.descricao}</option>"; </c:forEach> </select>

E de cara ele já estoura uma exceção

br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/usuarios/formulario.jsp at line 31

28: <label class=“rotulo”>Perfil:</label>
29: <select name=“usuario.perfil” class=“campo” id=“perfilid”>
30: <c:forEach items=“perfis” var=“perfil” >
31: <option value="${perfil.id}">${perfil.descricao}</option>";
32: </c:forEach>
33: </select>

Causa: javax.el.PropertyNotFoundException: Property ‘id’ not found on type java.lang.String

Já procurei algo que pudesse me ajudar, mas não progredi muito. Creio que seja besteira!

Tentei utilizar o @Convert mas não consegui.

Quando listo através do próprio PerfisController não dá erro.

Alguém pode me ajudar por favor?!?!?
Valew…

vc deve fazer:

 <c:forEach items="${perfis}" var="perfil" > 

faltou soh a Expression language…

Opa!
Eu no seu lugar não colocaria o arraylist no Controller e sim na DAO:
PerfilDAO

public Perfil lista() {
public List<Perfil> lista() {
		return session.createCriteria(Perfil.class).list();
	}
}

E no Controller:

private final PerfilDAO perfilDao;
public void formulario() {
result.include("perfil", perfilDao.lista());
}

Não sei como está o resto do seu código, mas essa é a idéia, deixar a DAO cuidar da listagem e o controlador apenas repassar essa consulta que a DAO fez pro formulário. Depois vc captura isso com as tags na JSP.
Abraço!

como o guevara comentou, vc não precisa desse código:

ArrayList<Perfil> listaPerfil = new ArrayList<Perfil>();  
listaPerfil = (ArrayList<Perfil>) perfilDao.list();

se o seu dao retorna uma lista, não importa se é uma ArrayList, LinkedList ou qqer outra List, é só incluir direto no result que o vraptor vai saber mandar pra view e vai funcionar…

Pow aí… valew!

faltou só a expression language mesmo

Akele outro código só coloquei pra debugar!

Valew… vou melhorando!