Caros, bom dia.
Só alterei a TestaUsuario para verificar até onde a lista estava sendo populada e se estava sendo populada.
Estou fazendo a loja conforme as intruções da apostila, segue abaixo :
lista.ok.jsp
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title></title>
</head>
<body>
<h1>Usuários</h1>
<display:table id="usuario" name="${usuarios}" requestURI="usuario.lista.logic">
<display:column property="id" sortable="true"/>
<display:column property="login" />
</display:table>
</body>
</html>
UsuarioLogic.java
package br.com.caelum.lojavirtual.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import br.com.caelum.lojavirtual.dao.DaoFactory;
import br.com.caelum.lojavirtual.modelo.Usuario;
@Component
@InterceptedBy(DaoInterceptor.class)
public class UsuarioLogic {
private final DaoFactory daoFactory;
public UsuarioLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void formulario(){
}
public void adiciona (Usuario usuario) {
this.daoFactory.beginTransaction();
this.daoFactory.getUsuarioDao().adiciona(usuario);
this.daoFactory.commit();
System.out.println("Adicionando " + usuario + " no banco de dados!");
}
private List<Usuario> usuarios;
public void lista () {
usuarios = this.daoFactory.getUsuarioDao().listaTudo();
}
public List<Usuario> getUsuarios() {
return usuarios;
}
public void remove (Usuario usuario) {
this.daoFactory.beginTransaction();
this.daoFactory.getUsuarioDao().remove(usuario);
this.daoFactory.commit();
}
}
DaoInterceptor.java
package br.com.caelum.lojavirtual.logic;
import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.Out;
import org.vraptor.view.ViewException;
import br.com.caelum.lojavirtual.dao.DaoFactory;
public class DaoInterceptor implements Interceptor {
private final DaoFactory factory = new DaoFactory();
@Out(key="br.com.caelum.lojavirtual.dao.DaoFactory")
public DaoFactory getFactory() {
return factory;
}
public void intercept(LogicFlow flow) throws LogicException, ViewException {
flow.execute();
if (factory.hasTransaction()) {
factory.rollback();
}
factory.close();
}
}
Dao.java
package br.com.caelum.lojavirtual.dao;
import java.util.List;
import org.hibernate.Session;
public class Dao<T> {
private final Session session;
private final Class type;
public Dao(Session session, Class type) {
this.session = session;
this.type = type;
}
protected Session getSession() {
return session;
}
public void adiciona(T usuario) {
this.session.save(usuario);
}
public void atualiza(T usuario) {
this.session.merge(usuario);
}
Usuario.java
package br.com.caelum.lojavirtual.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private String login;
private String senha;
public final Long getId() {
return id;
}
public final void setId(Long id) {
this.id = id;
}
public final String getLogin() {
return login;
}
public final void setLogin(String login) {
this.login = login;
}
public final String getSenha() {
return senha;
}
public final void setSenha(String senha) {
this.senha = senha;
}
}
Ao digitar o caminho no navegador http://localhost:8080/loja/usuario.lista.logic
eu obtenho uma lista vazia.
Usuários
Nothing found to display.
Lembrando, uso Eclipse+PostgreSQL e estou conseguindo adicionar sem problemas pelo endereço http://localhost:8080/loja/usuario.formulario.logic
Muito obrigado