Galera o seguinte. tenho o meu formulário de cadastrar propriedade nele tenho um campo para digitar o CPF do produtor que é o dono da propriedade. Então uso um Converter para poder pega o CPF e converter em um Objeto do tipo Produtor. O problema é ele não ta retornando objeto quando chega na linha do Try-Catch já retorna null que está no catch. O que faço? Já ia esquecendo a opção de converter o Objeto Produtor na String do CPF ta funcionando perfeitamente.
[code]public class ConverterProdutor implements Converter{
private ProdutorController pc = new ProdutorController();
public Object getAsObject(FacesContext context, UIComponent component, String value){
try{
for(Iterator<?> iter = pc.getFacade().findAll().iterator(); iter.hasNext();){
Produtor p = (Produtor)iter.next();
if(p.getCpfProdutor().equals(value))
return p;
}
return null;
}catch(Exception e){
return null;
}
}
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException{
if(value == null){
return null;
}
if(value instanceof Produtor){
Produtor o = (Produtor) value;
return "" + o.getCpfProdutor();
}else{
return null;
}
}
}[/code]
Classe produtor
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package gestao.entity;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
-
@author arimateia
*/
@Entity
@Table(name = “produtor”)
@NamedQueries({@NamedQuery(name = “Produtor.findAll”, query = “SELECT p FROM Produtor p”), @NamedQuery(name = “Produtor.findByIdProdutor”, query = “SELECT p FROM Produtor p WHERE p.idProdutor = :idProdutor”), @NamedQuery(name = “Produtor.findByCpfProdutor”, query = “SELECT p FROM Produtor p WHERE p.cpfProdutor = :cpfProdutor”), @NamedQuery(name = “Produtor.findByNomeProdutor”, query = “SELECT p FROM Produtor p WHERE p.nomeProdutor = :nomeProdutor”), @NamedQuery(name = “Produtor.findByEdnProdutor”, query = “SELECT p FROM Produtor p WHERE p.ednProdutor = :ednProdutor”), @NamedQuery(name = “Produtor.findByCidadeProdutor”, query = “SELECT p FROM Produtor p WHERE p.cidadeProdutor = :cidadeProdutor”), @NamedQuery(name = “Produtor.findByUfProdutor”, query = “SELECT p FROM Produtor p WHERE p.ufProdutor = :ufProdutor”), @NamedQuery(name = “Produtor.findByFoneProdutor”, query = “SELECT p FROM Produtor p WHERE p.foneProdutor = :foneProdutor”), @NamedQuery(name = “Produtor.findByDataRegProdutor”, query = “SELECT p FROM Produtor p WHERE p.dataRegProdutor = :dataRegProdutor”)})
public class Produtor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = “idProdutor”)
private Integer idProdutor;
@Basic(optional = false)
@Column(name = “cpfProdutor”)
private String cpfProdutor;
@Column(name = “nomeProdutor”)
private String nomeProdutor;
@Column(name = “ednProdutor”)
private String ednProdutor;
@Column(name = “cidadeProdutor”)
private String cidadeProdutor;
@Column(name = “ufProdutor”)
private String ufProdutor;
@Column(name = “foneProdutor”)
private Integer foneProdutor;
@Column(name = “dataRegProdutor”)
@Temporal(TemporalType.DATE)
private Date dataRegProdutor;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection ordemServicoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection criacaoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection partoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection inseminacaoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection possuiMedicamentoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “fkProdutor”)
private Collection propriedadeCollection;public Produtor() {
}public Produtor(Integer idProdutor) {
this.idProdutor = idProdutor;
}public Produtor(Integer idProdutor, String cpfProdutor) {
this.idProdutor = idProdutor;
this.cpfProdutor = cpfProdutor;
}public Integer getIdProdutor() {
return idProdutor;
}public void setIdProdutor(Integer idProdutor) {
this.idProdutor = idProdutor;
}public String getCpfProdutor() {
return cpfProdutor;
}public void setCpfProdutor(String cpfProdutor) {
this.cpfProdutor = cpfProdutor;
}public String getNomeProdutor() {
return nomeProdutor;
}public void setNomeProdutor(String nomeProdutor) {
this.nomeProdutor = nomeProdutor;
}public String getEdnProdutor() {
return ednProdutor;
}public void setEdnProdutor(String ednProdutor) {
this.ednProdutor = ednProdutor;
}public String getCidadeProdutor() {
return cidadeProdutor;
}public void setCidadeProdutor(String cidadeProdutor) {
this.cidadeProdutor = cidadeProdutor;
}public String getUfProdutor() {
return ufProdutor;
}public void setUfProdutor(String ufProdutor) {
this.ufProdutor = ufProdutor;
}public Integer getFoneProdutor() {
return foneProdutor;
}public void setFoneProdutor(Integer foneProdutor) {
this.foneProdutor = foneProdutor;
}public Date getDataRegProdutor() {
return dataRegProdutor;
}public void setDataRegProdutor(Date dataRegProdutor) {
this.dataRegProdutor = dataRegProdutor;
}public Collection getOrdemServicoCollection() {
return ordemServicoCollection;
}public void setOrdemServicoCollection(Collection ordemServicoCollection) {
this.ordemServicoCollection = ordemServicoCollection;
}public Collection getCriacaoCollection() {
return criacaoCollection;
}public void setCriacaoCollection(Collection criacaoCollection) {
this.criacaoCollection = criacaoCollection;
}public Collection getPartoCollection() {
return partoCollection;
}public void setPartoCollection(Collection partoCollection) {
this.partoCollection = partoCollection;
}public Collection getInseminacaoCollection() {
return inseminacaoCollection;
}public void setInseminacaoCollection(Collection inseminacaoCollection) {
this.inseminacaoCollection = inseminacaoCollection;
}public Collection getPossuiMedicamentoCollection() {
return possuiMedicamentoCollection;
}public void setPossuiMedicamentoCollection(Collection possuiMedicamentoCollection) {
this.possuiMedicamentoCollection = possuiMedicamentoCollection;
}public Collection getPropriedadeCollection() {
return propriedadeCollection;
}public void setPropriedadeCollection(Collection propriedadeCollection) {
this.propriedadeCollection = propriedadeCollection;
}@Override
public int hashCode() {
int hash = 0;
hash += (idProdutor != null ? idProdutor.hashCode() : 0);
return hash;
}@Override
public boolean equals(Object object) {
// TODO: Warning - this method won’t work in the case the id fields are not set
if (!(object instanceof Produtor)) {
return false;
}
Produtor other = (Produtor) object;
if ((this.idProdutor == null && other.idProdutor != null) || (this.idProdutor != null && !this.idProdutor.equals(other.idProdutor))) {
return false;
}
return true;
}@Override
public String toString() {
return “gestao.entity.Produtor[idProdutor=” + idProdutor + “]”;
}
}
[/code]
Classe ProdutorController
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package gestao.veterinaria.controller;
import gestao.entity.Produtor;
import gestao.session.ProdutorFacadeLocal;
import java.util.ArrayList;
import javax.ejb.EJB;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.swing.JOptionPane;
import java.util.List;
import javax.faces.model.SelectItem;
/**
*
-
@author arimateia
*/
public class ProdutorController implements Controller{@EJB
private ProdutorFacadeLocal facade;
private Produtor produtor;private DataModel model;
/**
-
@return the produtor
*/
public Produtor getProdutor() {
return produtor;
}
/**
-
@param produtor the produtor to set
*/
public void setProdutor(Produtor produtor) {
this.produtor = produtor;
}
public String novo(){
this.setProdutor(new Produtor()); return "novoProdutor";
}
public DataModel getTodos() throws Exception{
model = new ListDataModel(getFacade().findAll()); return model;
}
public List getProdutores(){
return getFacade().findAll();
}
public String editar() {
produtor = getProdutorFromEditOrDelete();setProdutor(produtor); return "editar";
}
public String excluir() throws Exception {
produtor = getProdutorFromEditOrDelete();int i = JOptionPane.showConfirmDialog(null, "Deja realmente excluir o produtor: " + produtor.getNomeProdutor(), "Excluir Raça", JOptionPane.YES_NO_OPTION); if(i == JOptionPane.YES_NO_OPTION) getFacade().remove(produtor); else return "sucesso"; return "sucesso";
}
public Produtor getProdutorFromEditOrDelete() {
produtor = (Produtor)model.getRowData();
return produtor;}
public String salvar() throws Exception {
if(produtor.getIdProdutor()==null) getFacade().create(produtor); else getFacade().edit(produtor); return "sucesso";
}
/**
-
@return the facade
*/
public ProdutorFacadeLocal getFacade() {
return facade;
}
/**
-
@param facade the facade to set
*/
public void setFacade(ProdutorFacadeLocal facade) {
this.facade = facade;
}
-
@return the produtor
}
[/code]
Classe PropriedadeController
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package gestao.veterinaria.controller;
import gestao.entity.Produtor;
import gestao.entity.Propriedade;
import gestao.session.ProdutorFacadeLocal;
import gestao.session.PropriedadeFacadeLocal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import javax.swing.JOptionPane;
/**
*
-
@author arimateia
*/
public class PropriedadeController implements Controller{@EJB
private PropriedadeFacadeLocal facade;
private Propriedade propriedade;private DataModel model;
@EJB
private ProdutorFacadeLocal facadeProdutor;
private Map<String, Object> listaProdutores = null;
private Produtor p = null;public String novo() {
this.setPropriedade(new Propriedade());return "novoPropriedade";
}
public DataModel getTodos() throws Exception {
model = new ListDataModel(facade.findAll()); return model;
}
public Propriedade getPropriedadeFromEditOrDelete(){
propriedade = (Propriedade)model.getRowData(); return propriedade;
}
public String editar() {
propriedade = getPropriedadeFromEditOrDelete(); return "editar";
}
public String excluir() throws Exception {
propriedade = getPropriedadeFromEditOrDelete();int i = JOptionPane.showConfirmDialog(null, "Deja realmente excluir o produtor: " + propriedade.getNomePropriedade(), "Excluir Raça", JOptionPane.YES_NO_OPTION); if(i == JOptionPane.YES_NO_OPTION) facade.remove(propriedade); else return "sucesso"; return "sucesso";
}
public String salvar() throws Exception {
if(propriedade.getIdPropriedade() ==null) facade.create(propriedade); else facade.edit(propriedade); return "sucesso";
}
/**
-
@return the proriedade
*/
public Propriedade getPropriedade() {
return propriedade;
}
/**
-
@param proriedade the proriedade to set
*/
public void setPropriedade(Propriedade propriedade) {
this.propriedade = propriedade;
}
//retorna uma lista para o SelectItem
public Map<String, Object> getListaProdutores(){listaProdutores = new LinkedHashMap<String, Object>(); for(Iterator<?> iter = facadeProdutor.findAll().iterator(); iter.hasNext();){ p = (Produtor)iter.next(); listaProdutores.put(p.getIdProdutor().toString(), p.getIdProdutor()); } return listaProdutores;
}
public List getListaProdutor(){
List result = new ArrayList();
List produtores = facadeProdutor.findAll();
for(Produtor pr : produtores){
result.add(new SelectItem(pr.getIdProdutor(), pr.getIdProdutor().toString()));
}return result;
}
-
@return the proriedade
}
[/code]
Formulario
<h:inputText value="#{propriedadeC.propriedade.fkProdutor}" id="fkProdutor"
size="40" required="true" requiredMessage="CPF campo origatório" converter="converterProdutor" />