Estou iniciando meus estudos com esse Framework, e não consigo persisistir e não apresenta nenhum erro.
Controller
package br.com.caelum.vraptor.controller;
import java.util.List;
import javax.inject.Inject;
import javax.validation.Valid;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.dao.UsuarioDAO;
import br.com.caelum.vraptor.interceptor.IncludeParameters;
import br.com.caelum.vraptor.modelo.Usuario;
import br.com.caelum.vraptor.validator.Validator;
@Controller
public class UsuarioController {
private UsuarioDAO usuarioDao;
private Result result;
private Validator validator;
@Inject
public UsuarioController(UsuarioDAO dao,Result result,Validator validator) {
this.usuarioDao = dao;
this.result = result;
this.validator = validator;
}
public UsuarioController() {
}
public void form(){}
@IncludeParameters //preenche as informações do formulário, com a informação do Usuario
public void adiciona(@Valid Usuario usuario){
validator.onErrorRedirectTo(this).form(); //se estiver erro, redireciona esse usuario para o form()
usuarioDao.adiciona(usuario);
result.redirectTo(this).listar(); //encaminha usuario.
}
public void listar(){
List<Usuario> usuarios = usuarioDao.listar();
result.include("usuarios",usuarios); //permite um atributo usuarios na view.
}
}
DAO
@RequestScoped
public class UsuarioDAO {
private EntityManager manager;
@Inject
public UsuarioDAO(EntityManager manager) {
this.manager = manager;
}
public UsuarioDAO() {
}
public void adiciona(Usuario usuario){
manager.getTransaction().begin();
manager.persist(usuario);
manager.getTransaction().commit();
}
public List<Usuario> listar() {
return manager.createQuery("select u from Usuario u",Usuario.class).getResultList();
}
}
View
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@ taglib tagdir="/WEB-INF/tags" prefix=“alura” %>
<c:import url="/WEB-INF/jsp/header.jsp" />
<label for="nome">Nome</label>
<input type="text" id="nome" name="usuario.nome" class="form-control" value="${usuario.nome}">
<alura:validationMessage name="usuario.nome" />
<label for="email">Email</label>
<input type="text" id="email" name="usuario.email" class="form-control" value="${usuario.email}">
<alura:validationMessage name="usuario.email" />
<label for="login">Login</label>
<input type="text" id="login" name="usuario.login" class="form-control" value="${usuario.login}" >
<alura:validationMessage name="usuario.login" />
<label for="senha">Senha</label>
<input type="password" id="senha" name="usuario.senha" class="form-control">
<alura:validationMessage name="usuario.senha" />
<input type="submit" value="Cadastrar" class="btn">