Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Objeto null ao tentar acessá-lo

$
0
0

@Rocknauta escreveu:

Olá, tenho as seguintes entidades:

package br.com.pokemax.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "geracao")
public class Geracao {

    @Getter
    @Setter
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Getter
    @Setter
    @NotBlank(message = "Nome não pode estar em branco.")
    @Pattern(regexp = "[A-z]*", message = "Atenção, digite somente letras")
    @Size(max = 20, message = "Máximo de 20 caracteres permitidos.")
    @Column(length = 20, nullable = false)
    private String nome;

    @Getter
    @Setter
    @Min(1)
    @Max(7)
    private Integer numero;

    @Getter
    @Setter
    @Column(name = "total_pokemons", nullable = false)
    private Integer totalPokemons;

    public Geracao() {

    }

}

package br.com.pokemax.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "habilidade", uniqueConstraints = @UniqueConstraint(columnNames = { "nome" }))
public class Habilidade {

    @Getter
    @Setter
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Getter
    @Setter
    @NotBlank(message = "Nome não pode estar em branco.")
    @Pattern(regexp = "[A-z]*", message = "Atenção, digite somente letras")
    @Size(max = 20, message = "Máximo de 20 caracteres permitidos.")
    @Column(length = 20, nullable = false)
    private String nome;

    @Getter
    @Setter
    @NotBlank
    @Size(max = 150, message = "Máximo de 150 caracteres permitidos.")
    @Column(length = 150, nullable = false)
    private String descricao;

    @Getter
    @Setter
    @NotBlank
    @Size(max = 150, message = "Máximo de 150 caracteres permitidos.")
    @Column(name = "texto_in_game", length = 150, nullable = false)
    private String textoInGame;

    @Getter
    @Setter
    @Column(length = 150, name = "efeito_secundario", nullable = true)
    private String efeitoSecundario;
    
    @Getter
    @Setter
    @ManyToOne
    private Geracao geracao;

    public Habilidade() {

    }

}

package br.com.pokemax.controle;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;

import br.com.pokemax.modelo.Geracao;
import br.com.pokemax.modelo.Habilidade;
import br.com.pokemax.negocio.GeracaoDAO;
import br.com.pokemax.negocio.HabilidadeDAO;
import br.com.pokemax.util.MensagensUtil;
import br.com.pokemax.util.ValidadorUtil;
import lombok.Getter;
import lombok.Setter;

@ViewScoped
@ManagedBean(name = "habilidademb")
public class ControleHabilidade implements Serializable {

    private static final long serialVersionUID = 1L;

    @Getter
    @Setter
    private Habilidade habilidade;

    @Inject
    private HabilidadeDAO dao;

    @Getter
    @Setter
    private Boolean efeitoSecundario;

    @Getter
    @Setter
    private List<Habilidade> lista;

    @Inject
    GeracaoDAO gDao;

    @Getter
    @Setter
    private Geracao geracao;

    @Getter
    @Setter
    private List<Geracao> geracoes;

    @PostConstruct
    public void inicio() {

    }

    public void novo() {
        habilidade = new Habilidade();
    }

    public void gravar() {
        try {
            if (habilidade.getId() == null) {
                dao.insert(habilidade);
                MensagensUtil.msg("Info", "cadastro.sucesso", new Object[] { MensagensUtil.get("habilidade") });
                habilidade = new Habilidade();
            } else {
                dao.update(habilidade);
                MensagensUtil.msg("Info", "alterado.sucesso", new Object[] { MensagensUtil.get("habilidade") });
            }

        } catch (Exception e) {
            e.getMessage();
            return;
        }

    }

    public void pesquisar() {
        try {
            lista = dao.findAll();
            for (Habilidade habilidade : lista) {
                habilidade.setDescricao(ValidadorUtil.checkTipoPokemon(habilidade.getDescricao()));
                habilidade.setTextoInGame(ValidadorUtil.checkTipoPokemon(habilidade.getTextoInGame()));
                habilidade.setDescricao(ValidadorUtil.checkAtributoPokemon(habilidade.getDescricao()));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void excluir(Habilidade h) {
        try {
            dao.delete(h);
            MensagensUtil.msg("Info", "removido.sucesso", new Object[] { MensagensUtil.get("habilidade") });
            pesquisar();
        } catch (Exception e) {
            e.getMessage();
        }
    }

    public void editar(Long id) {
        try {
            setHabilidade(dao.find(id));
        } catch (Exception e) {
            e.getMessage();
        }

    }

    public void cancelar() {
        habilidade = null;

    }

    public List<Geracao> listarGeracoes() throws Exception {

        this.geracoes = gDao.findAll();
        return this.geracoes;
    }

}

package br.com.pokemax.modelo.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import br.com.pokemax.modelo.Geracao;
import br.com.pokemax.negocio.GeracaoDAO;

@FacesConverter(value = "geracaoConverter", forClass = Geracao.class)
public class GeracaoConverter implements Converter {

    @Inject
    GeracaoDAO dao;

    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {

        if (value != null) {
            try {
                Geracao geracao = dao.find(Long.parseLong(value));
                return geracao;
            } catch (Exception e) {
                e.printStackTrace();
                return e;
            }
            
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object object) {
        if (object != null) {
            return String.valueOf(((Geracao) object).getId());
        } else {
            return null;
        }
    }

}

Estou tentando implementar um autocomplete do primefaces, quando eu chego no converter ele não passa da linha

Geracao geracao = dao.find(Long.parseLong(value));

porque o dao está null mesmo eu dando o Inject nele, alguém sabe como posso resolver?

Mensagens: 2

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>