Ola galera comecei hoje a fazer um simples cadastro com Vraptor mais ele esta dando nullpointexeption heheeh
segue o codigo para ver se alguem pode me ajudar
o modelo:
package modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
*
* @author Fred
*/
@Entity
public class Dimensao {
@Id
@GeneratedValue
private Long id;
private String nome;
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the alternativa
*/
}
O Dao
package Dao;
import br.com.caelum.goodbuy.infra.CriadorDeSession;
import br.com.caelum.vraptor.ioc.Component;
import java.util.List;
import modelo.Dimensao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
/**
*
* @author Fred
*/
@Component
public class DimensaoDao {
private final Session session;
public DimensaoDao() {
this.session = CriadorDeSession.getSession();
}
public void salva(Dimensao dimensao) throws HibernateException {
Transaction tx = session.beginTransaction();
session.save(dimensao);
tx.commit();
}
public void atualiza(Dimensao dimensao) {
Transaction tx = session.beginTransaction();
this.session.update(dimensao);
tx.commit();
}
public void remove(Dimensao dimensao) {
Transaction tx = session.beginTransaction();
this.session.delete(dimensao);
tx.commit();
}
public List<Dimensao> listaTudo() {
return this.session.createCriteria(Dimensao.class).list();
}
public Dimensao carrega(Long id) {
return (Dimensao) this.session.load(Dimensao.class, id);
}
public List<Dimensao> busca(String nome) {
return session.createCriteria(Dimensao.class).add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE)).list();
}
public void recarrega(Dimensao dimensao) {
session.refresh(dimensao);
}
}
O Controller
package Controller;
import Dao.DimensaoDao;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.ValidationMessage;
import java.util.List;
import modelo.Dimensao;
/**
*
* @author Fred
*/
@Resource
public class DimensaoController {
private final DimensaoDao dao;
private final Result result;
private final Validator validator;
public DimensaoController(DimensaoDao dao, Result result, Validator validator) {
this.dao = dao;
this.result = result;
this.validator = validator;
}
@Get @Path("/listadimensao")
public List<Dimensao> lista() {
return dao.listaTudo();
}
@Post @Path("/listadimensao")
public void adiciona(final Dimensao dimensao) {
if (dimensao.getNome() == null || dimensao.getNome().length() < 3) {validator.add(new ValidationMessage("Nome é obrigatório e precisa ter mais de 3 letras", "dimensao.nome"));
}
validator.onErrorUsePageOf(DimensaoController.class).cad_dimensao();
dao.salva(dimensao);
result.redirectTo(this).lista1();
}
@Get @Path("/dimensao/novo")
public void cad_dimensao() {
}
@Get @Path("/dimensao/listatudo")
public List<Dimensao> lista1() {
return dao.listaTudo();
}
@Get @Path("/dimensao/{id}")
public Dimensao edita(Long id) {
return dao.carrega(id);
}
@Post @Path("/dimensao/{dimensao.id}")
public void altera(Dimensao dimensao) {
dao.atualiza(dimensao);
result.redirectTo(this).lista1();
}
@Delete @Path("/dimensao/{id}")
public void remove(Long id) {
Dimensao dimensao = dao.carrega(id);
dao.remove(dimensao);
result.redirectTo(this).lista1();
}
@Get @Path("/dimensao/busca")
public List<Dimensao> busca(String nome) {
result.include("nome", nome);
return dao.busca(nome);
}
}
Agora o jsp
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<html>
<head>
</head>
<body>
<table width="100%">
<tr>
<td>
<%@ include file="/header1.jspf" %>
</td>
</tr>
</table>
<form action="<c:url value="/listadimensao"/>" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>Cadastro de Dimensao</legend>
<label for="nome">Nome:</label>
<input id="nome" type="text" name="produto.nome" value="${dimensao.nome }"/>
<button type="submit">Enviar</button>
</fieldset>
</form>
</body>
</html>
Ele da o seguinte erro:
Caused by: java.lang.NullPointerException
at Controller.DimensaoController.adiciona(DimensaoController.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 51 more
O Erro esta na linha 43 do controller mais na linha so tem uma validacao
if (dimensao.getNome() == null || dimensao.getNome().length() < 3) {validator.add(new ValidationMessage("Nome é obrigatório e precisa ter mais de 3 letras", "dimensao.nome"));
Estou errando?
Obrigado