Ola, amigos Corinthianos, Palmeirense, São Paulinos, Flamenguistas, Vascainos, Fluiminense…Gremistas e Colorados…etc…
Estou estudando JSF e JPA e me deparei com uma grande dificuldade, eu estou tentando gravar o tipo da pessoa a partir de um comboBox, mas esta dificil, estou ficando maluco…e não consigo de jeito nenhum fazer esse cadastro funcionar esta dando o seguinte erro: "Validation Error: Value is not valid" eu fiz um converter personalizado…mas mesmo assim esta dando problema
Eu gostaria de saber…o que fazer…não consigo mas ver aonde esta o erro…abaixo vai o codigo
esse é o formulario de cadastro que tem o select one
[code]<h:selectOneMenu id="tipoPessoa" value="#{pessoaView.tipoPessoa}" converter="converteInteiroTipoPessoa">
<f:selectItems value="#{pessoaView.buscarTodosTipo}" id="tipoDePessoa"/>
</h:selectOneMenu>
<h:selectOneMenu id="tipoPessoa" value="#{pessoaView.tipoPessoa}" converter="converteInteiroTipoPessoa">
<f:selectItems value="#{pessoaView.buscarTodosTipo}" id="tipoDePessoa"/>
</h:selectOneMenu>
faces-config.xml
view plaincopy to clipboardprint?
<converter>
<converter-id>converteInteiroTipoPessoa</converter-id>
<converter-class>
br.com.addigital.util.converterInteiroObjeto
</converter-class>
</converter>
<managed-bean>
<managed-bean-name>pessoaView</managed-bean-name>
<managed-bean-class>br.com.addigital.controller.PessoaController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<converter>
<converter-id>converteInteiroTipoPessoa</converter-id>
<converter-class>
br.com.addigital.util.converterInteiroObjeto
</converter-class>
</converter>
<managed-bean>
<managed-bean-name>pessoaView</managed-bean-name>
<managed-bean-class>br.com.addigital.controller.PessoaController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
meu bean de controle PessoaController.java
package br.com.addigital.controller;
import br.com.addigital.cotacao.Pessoa;
import br.com.addigital.cotacao.TipoPessoa;
import br.com.addigital.DAO.PessoaDAO;
import java.util.ArrayList;
import java.util.Iterator;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import javax.faces.component.html.HtmlSelectOneMenu;
import java.util.List;
public class PessoaController {
private Pessoa pessoa;
private DataModel model;
private String key;
private TipoPessoa tipoPessoa;
public PessoaController(){
setKey("%");
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public String novaPessoa(){
this.setPessoa(new Pessoa());
this.setTipoPessoa(new TipoPessoa());
return "novo";
}
public DataModel getBuscaTodasPessoas(){
PessoaDAO pessoaDAO=new PessoaDAO();
setModel(new ListDataModel(pessoaDAO.listarTodasPessoas()));
return getModel();
}
public DataModel getBuscaNomePessoas(){
PessoaDAO pessoaDAO=new PessoaDAO();
setModel(new ListDataModel(pessoaDAO.listarNomePessoas(this.getKey())));
return getModel();
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List <SelectItem> getBuscarTodosTipo(){
//listaItem.add(new SelectItem(Integer.parseInt("15"),"COMPRADOR"));
PessoaDAO pessoaDAO=new PessoaDAO();
Iterator <TipoPessoa> lista=pessoaDAO.listarTipoPessoas().iterator();
List <SelectItem> listaItens=new ArrayList();
TipoPessoa aux=null;
while(lista.hasNext()){
aux=lista.next();
listaItens.add(new SelectItem(aux.getId(),aux.getTipo()));
}
pessoaDAO=null;
return listaItens;
}
public String salvar(){
PessoaDAO pessoaDAO=new PessoaDAO();
//pessoa.getTipoPessoa().setId(tipoPessoa.getId());
pessoaDAO.salvar(pessoa);
pessoaDAO=null;
pessoa=null;
tipoPessoa=null;
return "sucessoIns";
}
public DataModel getModel() {
return model;
}
public void setModel(DataModel model) {
this.model = model;
}
public TipoPessoa getTipoPessoa() {
return tipoPessoa;
}
public void setTipoPessoa(TipoPessoa tipoPessoa) {
this.tipoPessoa = tipoPessoa;
}
}
Minha conversao personalizada
package br.com.addigital.util;
import java.text.ParseException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import br.com.addigital.cotacao.Pessoa;
import br.com.addigital.cotacao.TipoPessoa;
import javax.faces.component.html.HtmlSelectOneMenu;
public class converterInteiroObjeto implements Converter {
public Object getAsObject(FacesContext context,UIComponent componente, String value) throws ConverterException {
TipoPessoa tp=new TipoPessoa();
tp.setId(Integer.getInteger(value));
return tp;
}
public String getAsString(FacesContext context, UIComponent component, Object target) {
if (target!=null){
return String.valueOf(target);
}
return null;
}
}
Meu bean de Pessoa.java
package br.com.addigital.cotacao;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name="PESSOA")
public class Pessoa implements java.io.Serializable {
@Id
@Column(name="ID_PESSOA",nullable=false)
private Integer id;
@Column(name="CNPJ_CPF")
private String cpfCnpj;
@Column(name="NOME")
private String nome;
@Column(name="EMAIL")
private String email;
@Column(name="LOGIN")
private String login;
@Column(name="SENHA")
private String senha;
@ManyToOne
@JoinColumn(name="ID_TIPO")
private TipoPessoa tipoPessoa;
@OneToMany(cascade=CascadeType.ALL,mappedBy="pessoa")
private Collection <Endereco> enderecos;
public Pessoa(){
tipoPessoa=new TipoPessoa();
tipoPessoa.setId(0);
tipoPessoa.setTipo("");
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public TipoPessoa getTipoPessoa() {
return tipoPessoa;
}
public void setTipoPessoa(TipoPessoa tipoPessoa) {
this.tipoPessoa = tipoPessoa;
}
public Collection<Endereco> getEnderecos() {
return enderecos;
}
public void setEnderecos(Collection<Endereco> enderecos) {
this.enderecos = enderecos;
}
public String getCpfCnpj() {
return cpfCnpj;
}
public void setCpfCnpj(String cpfCnpj) {
this.cpfCnpj = cpfCnpj;
}
}
TipoPessoa
package br.com.addigital.cotacao;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import br.com.addigital.cotacao.Pessoa;
@Entity
@Table(name="TIPOPESSOA")
public class TipoPessoa implements java.io.Serializable {
@Id
@Column(name="ID_TIPO",nullable=false)
private Integer id;
@Column(name="TIPO")
private String tipo;
@OneToMany(cascade=CascadeType.ALL,mappedBy="tipoPessoa")
private List <Pessoa> pessoal;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public List<Pessoa> getPessoal() {
return pessoal;
}
public void setPessoal(List<Pessoa> pessoal) {
this.pessoal = pessoal;
}
}
PessoaDAO
package br.com.addigital.DAO;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import br.com.addigital.cotacao.TipoPessoa;
import br.com.addigital.cotacao.Pessoa;
public class PessoaDAO {
private EntityManagerFactory emf;
private EntityManager getEntityManager(){
return emf.createEntityManager();
}
public PessoaDAO() {
emf=Persistence.createEntityManagerFactory("CotacaoPU");
}
public void salvar(Pessoa pessoa){
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(pessoa);
em.getTransaction().commit();
}catch(Exception e){
em.getTransaction().rollback();
e.printStackTrace();
}finally{
em.close();
}
}
public void atualizar(Pessoa pessoa){
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.merge(pessoa);
em.getTransaction().commit();
}catch(Exception e){
em.getTransaction().rollback();
e.printStackTrace();
}finally{
em.close();
}
}
public void excluir(Pessoa pessoa){
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
pessoa=em.merge(pessoa);
em.remove(pessoa);
em.getTransaction().commit();
}catch(Exception e){
em.getTransaction().rollback();
e.printStackTrace();
}finally{
em.close();
}
}
public <Pessoa> List listarTodasPessoas(){
EntityManager em=getEntityManager();
try{
Query q=em.createQuery("select p from Pessoa p");
return q.getResultList();
}finally {
em.close();
}
}
public <Pessoa> List listarNomePessoas(String nomeDaPessoa){
EntityManager em=getEntityManager();
try{
Query q=em.createQuery("select p from Pessoa p where p.nome LIKE ?1");
q.setParameter(1,nomeDaPessoa);
return q.getResultList();
}finally {
em.close();
}
}
public List listarTipoPessoas(){
EntityManager em=getEntityManager();
try{
Query q=em.createQuery("select p from TipoPessoa p");
return q.getResultList();
}finally {
em.close();
}
}
}[/code]
eu agradeço se alguem me dar uma “Luz…”