@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