Cadastro simples com vraptor

1 resposta
fred_cbranco

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

1 Resposta

fred_cbranco

Galera o erro esta la no jsp, na

eu esqueci de alterar para dimensao.nome

Agora deu certo obrigado

Criado 30 de julho de 2011
Ultima resposta 30 de jul. de 2011
Respostas 1
Participantes 1