[Resolvido]Cadastro com Primefaces

Estou fazendo uma aplicação simples de cadastro

onde possui o seguinte modelo

[code]

package modelo;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@SuppressWarnings(“serial”)
@Entity
@Table(name=“obri_aquisicao_servicos”, catalog = “lafs”)
public class AquisicaoServicos implements java.io.Serializable{

@Id
@GeneratedValue
private int id;
private String contratado_razao;
private String contratado_documento;
private String nf_numero; 
private Date emissao;
private Double valor;
private Double retencoes_ir_3280;
private Double retencoes_ir_3208;
private Double retencoes_ir_1708;
private Double retencoes_ir_0561;
private Double retencoes_ir_8045;
private Double retencoes_ir_5952;
private Double previdencia_gps;
private Double municipio_iss;
private String obs_envio;
private Integer ano;


public AquisicaoServicos(int id, String contratado_razao,
		String contratado_documento, String nf_numero, Date emissao,
		Double valor, Double retencoes_ir_3280, Double retencoes_ir_3208,
		Double retencoes_ir_1708, Double retencoes_ir_0561,
		Double retencoes_ir_8045, Double retencoes_ir_5952,
		Double previdencia_gps, Double municipio_iss, String obs_envio,
		Integer ano, Cli cliente, Usuario usuario, Mes mes) {
	super();
	this.id = id;
	this.contratado_razao = contratado_razao;
	this.contratado_documento = contratado_documento;
	this.nf_numero = nf_numero;
	this.emissao = emissao;
	this.valor = valor;
	this.retencoes_ir_3280 = retencoes_ir_3280;
	this.retencoes_ir_3208 = retencoes_ir_3208;
	this.retencoes_ir_1708 = retencoes_ir_1708;
	this.retencoes_ir_0561 = retencoes_ir_0561;
	this.retencoes_ir_8045 = retencoes_ir_8045;
	this.retencoes_ir_5952 = retencoes_ir_5952;
	this.previdencia_gps = previdencia_gps;
	this.municipio_iss = municipio_iss;
	this.obs_envio = obs_envio;
	this.ano = ano;
	this.cliente = cliente;
	this.usuario = usuario;
	this.mes = mes;
}


public AquisicaoServicos() {
	super();
}


@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="id_cliente",nullable=false)
private Cli cliente;


@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="id_usuario")
private Usuario usuario; 


@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="id_mes", nullable=false)
private Mes mes;


public int getId() {
	return id;
}


public void setId(int id) {
	this.id = id;
}


public String getContratado_razao() {
	return contratado_razao;
}


public void setContratado_razao(String contratado_razao) {
	this.contratado_razao = contratado_razao;
}

public String getContratado_documento() {
	return contratado_documento;
}


public void setContratado_documento(String contratado_documento) {
	this.contratado_documento = contratado_documento;
}


public String getNf_numero() {
	return nf_numero;
}


public void setNf_numero(String nf_numero) {
	this.nf_numero = nf_numero;
}


public Date getEmissao() {
	return emissao;
}


public void setEmissao(Date emissao) {
	this.emissao = emissao;
}


public Double getValor() {
	return valor;
}


public void setValor(Double valor) {
	this.valor = valor;
}


public Double getRetencoes_ir_3280() {
	return retencoes_ir_3280;
}


public void setRetencoes_ir_3280(Double retencoes_ir_3280) {
	this.retencoes_ir_3280 = retencoes_ir_3280;
}


public Double getRetencoes_ir_3208() {
	return retencoes_ir_3208;
}


public void setRetencoes_ir_3208(Double retencoes_ir_3208) {
	this.retencoes_ir_3208 = retencoes_ir_3208;
}


public Double getRetencoes_ir_1708() {
	return retencoes_ir_1708;
}


public void setRetencoes_ir_1708(Double retencoes_ir_1708) {
	this.retencoes_ir_1708 = retencoes_ir_1708;
}


public Double getRetencoes_ir_0561() {
	return retencoes_ir_0561;
}


public void setRetencoes_ir_0561(Double retencoes_ir_0561) {
	this.retencoes_ir_0561 = retencoes_ir_0561;
}


public Double getRetencoes_ir_8045() {
	return retencoes_ir_8045;
}


public void setRetencoes_ir_8045(Double retencoes_ir_8045) {
	this.retencoes_ir_8045 = retencoes_ir_8045;
}


public Double getRetencoes_ir_5952() {
	return retencoes_ir_5952;
}


public void setRetencoes_ir_5952(Double retencoes_ir_5952) {
	this.retencoes_ir_5952 = retencoes_ir_5952;
}


public Double getPrevidencia_gps() {
	return previdencia_gps;
}


public void setPrevidencia_gps(Double previdencia_gps) {
	this.previdencia_gps = previdencia_gps;
}


public Double getMunicipio_iss() {
	return municipio_iss;
}


public void setMunicipio_iss(Double municipio_iss) {
	this.municipio_iss = municipio_iss;
}


public String getObs_envio() {
	return obs_envio;
}


public void setObs_envio(String obs_envio) {
	this.obs_envio = obs_envio;
}


public Integer getAno() {
	return ano;
}


public void setAno(Integer ano) {
	this.ano = ano;
}


public Cli getCliente() {
	return cliente;
}


public void setCliente(Cli cliente) {
	this.cliente = cliente;
}


public Usuario getUsuario() {
	return usuario;
}


public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}


public Mes getMes() {
	return mes;
}


public void setMes(Mes mes) {
	this.mes = mes;
}

}

[code]

no controle tentei de 2 formas, chamando cada componente da view em uma variavel especifica
para depois contruir o objeto para salvar no banco, e a outra, ja inserindos os dados no proprio objeto
da Classe “AquisicaoServicos”

segue o codigo da 2


package controle.cadastro;

import java.awt.event.ActionEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import modelo.AquisicaoServicos;
import modelo.Cli;
import modelo.Mes;
import modelo.Usuario;

import org.primefaces.event.DateSelectEvent;

import dao.CliDAO;
import dao.MesDAO;
import dao.ObrigacoesDAO;

@ManagedBean(name="aquisicaoServicosControle")
@SessionScoped
public class Aquisicao_Servicos_Controle {

	//listas
	private List<Integer>anos = new ArrayList<Integer>();
	private List<Mes>meses = new ArrayList<Mes>();
	private List<Cli>clientes = new ArrayList<Cli>();
	
	//obj daos 
	private CliDAO clienteDao = new CliDAO();
	private MesDAO mesDao = new MesDAO();
	private ObrigacoesDAO obrigacoesDao = new ObrigacoesDAO();
	
	
	//obj que vai receber 
	private AquisicaoServicos aquisicao = new AquisicaoServicos();
	
	
	private String tipoDocumento = "CNPJ";
	
	private Date date = new Date();  
    
  
  
    public void handleDateSelect(DateSelectEvent event) {  
        FacesContext facesContext = FacesContext.getCurrentInstance();  
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Data Selecionada", format.format(event.getDate())));  
    }  
  
	
	 public void cadastrar(ActionEvent actionEvent) {  
	        FacesContext context = FacesContext.getCurrentInstance();  
	          
	        context.addMessage(null, new FacesMessage("Cadastro Efetuado com Sucesso"));  
	          
	 }
	 @PostConstruct
	 public void inicializar(){
		 this.anos = obrigacoesDao.listarAnos();
		 this.meses = mesDao.listar();
		 this.clientes = clienteDao.listar();
		 this.aquisicao.setAno(0);
		 this.aquisicao.setCliente(new Cli());
		 this.aquisicao.setContratado_documento("");
		 this.aquisicao.setContratado_razao("");
		 this.aquisicao.setEmissao(new Date());
		 this.aquisicao.setMes(new Mes());
		 this.aquisicao.setMunicipio_iss(0.0);
		 this.aquisicao.setNf_numero("");
		 this.aquisicao.setObs_envio("");
		 this.aquisicao.setPrevidencia_gps(0.0);
		 this.aquisicao.setRetencoes_ir_0561(0.0);
		 this.aquisicao.setRetencoes_ir_1708(0.0);
		 this.aquisicao.setRetencoes_ir_3208(0.0);
		 this.aquisicao.setRetencoes_ir_3280(0.0);
		 this.aquisicao.setRetencoes_ir_5952(0.0);
		 this.aquisicao.setRetencoes_ir_8045(0.0);
		 this.aquisicao.setUsuario(new Usuario());
		 this.aquisicao.setValor(0.0);
		 
	 }


	public List<Integer> getAnos() {
		return anos;
	}


	public void setAnos(List<Integer> anos) {
		this.anos = anos;
	}


	public List<Mes> getMeses() {
		return meses;
	}


	public void setMeses(List<Mes> meses) {
		this.meses = meses;
	}


	public List<Cli> getClientes() {
		return clientes;
	}


	public void setClientes(List<Cli> clientes) {
		this.clientes = clientes;
	}





	public AquisicaoServicos getAquisicao() {
		return aquisicao;
	}


	public void setAquisicao(AquisicaoServicos aquisicao) {
		this.aquisicao = aquisicao;
	}


	public String getTipoDocumento() {
		return tipoDocumento;
	}


	public void setTipoDocumento(String tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}



	public Date getDate() {
		return date;
	}


	public void setDate(Date date) {
		this.date = date;
	}
	 
	 
	 
}

segue a viu do cadastro


<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:pe="http://primefaces.org/ui/extensions">  
  
     <h:head >  
  					<title>Cadastro de Obrigacoes</title>
  					<meta http-equiv="refresh" content="#{session.maxInactiveInterval};url=./../../index.html" />
     				
  	</h:head>  
      
    <h:body>
    	<h:form id="form">
    	
					<p:panelGrid >
 						<f:facet name="header">
 							<p:row >
 									<p:column colspan="6">Cadastro das Aquisições de Serviços</p:column>
 							
 							</p:row>
 						</f:facet>
 						<p:row>
 							<p:column colspan="2" rowspan="2">
	 							<h:outputText value="Ano:" />
				        	 	<p:spacer width="10" height="0"/>
				        	 	<p:selectOneMenu  height="350" value="#{aquisicaoServicosControle.aquisicao.ano}" panelStyle="width:10%;height:10%">
				    				<f:selectItem itemLabel="Selecione um.." /> 
				    				<f:selectItems value="#{aquisicaoServicosControle.anos}" var="ano" itemLabel="#{ano}" itemValue="#{ano}"/>
			        			</p:selectOneMenu> 
			            		
			            		<p:separator/>
			            		
			            		<h:outputText value="Mes:" />
			 				   	<p:spacer width="10" height="0"/>   
			       		 		<p:selectOneMenu  height="380" value="#{aquisicaoServicosControle.aquisicao.mes}">
			    			        <f:selectItem itemLabel="Selecione um.." /> 
			    					<f:selectItems value="#{aquisicaoServicosControle.meses}" var="mes" itemLabel="#{mes.nome}" itemValue="#{mes.id}" />
			    	         				 
				            	</p:selectOneMenu>   
			
	 						</p:column>
	 					</p:row>	
 						
 						<p:row>
 							<p:column colspan="4" >
 								<h:outputLabel value="Cliente:" for="selectonemenucliente"/>
 								<p:spacer width="10" height="0" /> 
 								<p:selectOneMenu id="selectonemenucliente" value="#{aquisicaoServicosControle.aquisicao.cliente}" >
 									<f:selectItem itemLabel="Selecione um.." /> 
 									<f:selectItems value="#{aquisicaoServicosControle.clientes}" 
 												   var="cliente" itemLabel="#{cliente.razao}" itemValue="#{cliente.cod}"/>
 								</p:selectOneMenu>
 							</p:column>
 						</p:row>
 						<p:row>
 							<p:column colspan="6">
 								<h:outputLabel value="Razão do Contratado:" for="razao_contratado" />
 								<p:spacer width="10" height="0" /> 
 								<p:inputText id="razao_contratado" size="50" required="true" value="#{aquisicaoServicosControle.aquisicao.contratado_razao}"/>
 							</p:column>
 						</p:row>
 						<p:row>
 							<p:column colspan="2" rowspan="2">
 								<p:selectOneRadio value="#{aquisicaoServicosControle.tipoDocumento}">    
                  					<f:selectItem itemLabel="CNPJ" itemValue="CNPJ" />    
                  					<f:selectItem itemLabel="CPF" itemValue="CPF" />
                  					<f:selectItem itemLabel="PIS" itemValue="PIS" />
                  					<f:selectItem itemLabel="Outros" itemValue="OUTROS" />  
                				  	<p:ajax event="change" update=":form:mascaraTipoDocumento"/>                 
								</p:selectOneRadio>  
								
								<h:panelGroup id="mascaraTipoDocumento">
  				 					<p:inputMask value="#{aquisicaoServicosControle.aquisicao.contratado_documento}" rendered="#{aquisicaoServicosControle.tipoDocumento eq 'CNPJ'}" mask="99.999.999/9999-99" />  
   				 					<p:inputMask value="#{aquisicaoServicosControle.aquisicao.contratado_documento}"  rendered="#{aquisicaoServicosControle.tipoDocumento eq 'CPF'}" mask="999.999.999-99" />  
   				 					<p:inputMask value="#{aquisicaoServicosControle.aquisicao.contratado_documento}"  rendered="#{aquisicaoServicosControle.tipoDocumento eq 'PIS'}" mask="999.999.999-**" />  
   									<p:inputMask value="#{aquisicaoServicosControle.aquisicao.contratado_documento}"  rendered="#{aquisicaoServicosControle.tipoDocumento eq 'OUTROS'}"/>  
								</h:panelGroup>		
  							
 								
 							</p:column>
	 					
 						</p:row>
	 					<p:row>
		 					<p:column colspan="2">
		 						<h:outputLabel value="Numero da Nota:" for="nf_numero" />
 								<p:spacer width="10" height="0" /> 
 								<p:inputText id="nf_numero" size="10" value="#{aquisicaoServicosControle.aquisicao.nf_numero}"/>
		 					</p:column>
		 					<p:column colspan="2">
		 						<h:outputLabel value="Valor:" for="valor" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="valor" value="#{aquisicaoServicosControle.aquisicao.valor}" symbol="R$ "  
                   					 />  
        									
  
								
								
		 					</p:column>
		 					
	 					</p:row>
 						<p:row>
 							<p:column colspan="6">
 								 <h:outputLabel value="Data de Emissão:" for="calendario" />
 								 <p:spacer width="10" height="0" /> 
   								 <p:calendar id="calendario" value="#{aquisicaoServicosControle.date}" showOn="button" />  
 							</p:column>
 						</p:row>
 						<p:row>  
        					<p:column colspan="6" styleClass="ui-widget-header" style="text-align:center;">  
          						<h:outputText value="Darf's Retenções Gerados" />
       						</p:column>  
   						</p:row>  	
 						<p:row>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 0561:" for="retencoes_ir_0561" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_0561" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_0561}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
                   			</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 1708:" for="retencoes_ir_1708"  />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_1708" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_1708}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 3208:" for="retencoes_ir_3208"  />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_3208" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_3208}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 3280:" for="retencoes_ir_3280" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_3280" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_3280}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 5952:" for="retencoes_ir_5952" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_5952" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_5952}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="IR 8045:" for="retencoes_ir_8045" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="retencoes_ir_8045" value="#{aquisicaoServicosControle.aquisicao.retencoes_ir_8045}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 						</p:row>
 						<p:row>
 							<p:column colspan="1" styleClass="ui-widget-header" style="text-align:center;">
 								<h:outputText value="Município" />
 								
 							</p:column>
 							<p:column colspan="1" styleClass="ui-widget-header" style="text-align:center;">
 								<h:outputText value="Previdência"/>
 								
 							</p:column>
 							
 							<p:column colspan="4" styleClass="ui-widget-header" style="text-align:center;">
 								<h:outputText value="Observação de Envio"/>
 							</p:column>
 						</p:row>
 						<p:row>
 							<p:column colspan="1">
 								<h:outputLabel value="ISS:" for="municipio_iss" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="municipio_iss" value="#{aquisicaoServicosControle.aquisicao.municipio_iss}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="1">
 								<h:outputLabel value="GPS:" for="previdencia_gps" />
 								<p:spacer width="10" height="0" /> 
 								<pe:inputNumber id="previdencia_gps" value="#{aquisicaoServicosControle.aquisicao.previdencia_gps}" symbol="R$ "  
                   					 validatorMessage="The value must be greater than 50.00"/>  
 							</p:column>
 							<p:column colspan="4">
 								<p:inputTextarea autoResize="false"
								maxlength="250"  rows="1" cols="110" 
								value="#{aquisicaoServicosControle.aquisicao.obs_envio}"/>
 							</p:column>
 						</p:row>
 						<p:row>
 							<p:column colspan="6" style="align:center">
 									<div align="center">
 										<p:commandButton value="Cadastrar" label="Cadastrar" oncomplete="dlg.show()"
 										  				  update=":formdialogo:display" />				
									</div>
 									
 							</p:column>
 						</p:row>
 					</p:panelGrid>	
 					
 					 		
		 </h:form> 
		 
		 <h:form id="formdialogo">
		 	<p:dialog widgetVar="dlg" id="dlgconfirmacao" position="top">
			 	<p:panelGrid columns="2" id="display">
			 	
			 	
			 	
			 	 	<h:outputText value="Voce tem certeza sobre este cadastro?" />
				 	<h:outputText value="" />
				 		<h:outputText value="Ano :" />	
				 	<h:outputText value="#{aquisicaoServicosControle.aquisicao.ano}" />	
				 	<h:outputText value="Cliente :" />	
				 	<h:outputText value="#{aquisicaoServicosControle.aquisicao.cliente}" />
				 	<h:outputText value="Mes :" />
				 	<h:outputText value="#{aquisicaoServicosControle.aquisicao.mes}" />
				 	<h:outputText value="Valor :" />
				 	<h:outputText value="#{aquisicaoServicosControle.aquisicao.valor}" />	
				</p:panelGrid>
			 	 
			 	 
		 	</p:dialog>
		 
		 </h:form>
		
 			
 	</h:body>
 
</html>  

quando tento visualizar para ter a validação dos dados, sempre me aparece vazio, com o valor da inicialização
pretendo vizualizar em um dialog primeiro para depois chamar o método de cadastro

alguma ideia?

Quando executo o botão me aparece o seguinte erro

sourceId=j_idt19[severity=(ERROR 2), summary=(Erro de conversão ao definir o valor ‘2’ para ‘null Converter’. ), detail=(Erro de conversão ao definir o valor ‘2’ para ‘null Converter’. )]
sourceId=selectonemenucliente[severity=(ERROR 2), summary=(Erro de conversão ao definir o valor ‘873’ para ‘null Converter’. ), detail=(Erro de conversão ao definir o valor ‘873’ para ‘null Converter’. )]

pelo erro apresentado, entende-se que precisa de um conversor

mas andei pesquisando e utiliza-se conversor para o auto-completa do primefaces

alguem ae para dar uma ajuda??

obrigado

import desse tipo em app web

import java.awt.event.ActionEvent; 

está errado

post o log do erro

Nesse cara p:selectOneMenu id=“selectonemenucliente” você está apontando para um objeto cliente, mas você não tem um converter para ele.

Veja isso: JSF: Converter e Bean Auto Complete

@tmvolpato obrigado pela dica, mas isso nem esta sendo chamado ainda!!!
queria só visualizar no dialogo, os dados.

Qual o objetivo do converter, achei que era só para o autocompleta
não sei exatamente para que serve

[quote=LucianoTulio]@tmvolpato obrigado pela dica, mas isso nem esta sendo chamado ainda!!!
queria só visualizar no dialogo, os dados.

Qual o objetivo do converter, achei que era só para o autocompleta
não sei exatamente para que serve [/quote]O converter é para transformar um valor selecionado em um selectOne em objeto.
Qualquer componente que utilize seleção de objetos precisam de um converter.

Note que o seu value aponta para um objeto.

[quote=Hebert Coelho]O converter é para transformar um valor selecionado em um selectOne em objeto.
Qualquer componente que utilize seleção de objetos precisam de um converter.

Note que o seu value aponta para um objeto. [/quote]Quando eu digo que o value aponta para um Objeto quero dizer que ele aponta para uma Classe que você criou no seu sistema.

@Hebert Coelho segui seu conselho e criei os converter



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

import modelo.Cli;
import dao.CliDAO;

@FacesConverter(value="conversorCli", forClass=Mes.class)
public class ConversorCli implements Converter {

	CliDAO clidao = new CliDAO();

    public Cli getAsObject(FacesContext context, UIComponent component, String value) {
    	
    	Cli cli = clidao.buscarCli(Integer.parseInt(value));
        return cli;
    	
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
    	 if(value != null || value !="" && value instanceof Cli) {  
    		 return value.toString();  
    	 }else{
    		 return null;
    	 }
    }

}  

Mas dispara o erro

“sourceId=selectonemenucliente[severity=(ERROR 2), summary=(selectonemenucliente:
Erro de validação: o valor não é válido),
detail=(selectonemenucliente: Erro de validação: o valor não é válido)]”

Fiz uma pesquisa no tio google e encontrei respostas sobre
sobreescrever os métodos hashcode() e equals()

utilizei o que o próprio eclipse cria só que utilizei apenas o “id”


@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((cod == null) ? 0 : cod.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Cli other = (Cli) obj;
		if (cod == null) {
			if (other.cod != null)
				return false;
		} else if (!cod.equals(other.cod))
			return false;
		return true;
	}

No artigo que li do Rafael Ponte
http://www.rponte.com.br/2008/02/01/selectonemenu-converter-erro-de-validacao/

SelectOneMenu + converter = erro de validação

falava que o erro comum seria a falta dos métodos hashcode() e equals().

Implementei e msm assim acusa o mesmo log

Alguma ajuda

@FacesConverter(value=“conversorCli”, forClass=Mes.class)

É conversor de cliente ou Mes?

Você declarou o conversor no selectOne?

Foi mal, escrevi errado, ele tava como Cli.class sim

mas ae vai uma perg, se no botao eu coloco ajax = false

ele acusa o erro do mesmo logo

mas se coloco true, ele nao acusa o erro

mas nao exibe no dialog

Coloquei um System.out.println(cli.getRazao());

no conversor e sei que ele ta chamando e buscando certo o
que escolhi no selectonemenu, mas ainda nao consigo recuperar
esse valor pela variavel no meu managedBean

meu selectone

<p:selectOneMenu id="selectonemenucliente" value="#{aquisicaoServicosControle.cliente}" converter="conversorCli" >
 	<f:selectItem itemLabel="Selecione um.." /> 
 	
        <f:selectItems value="#{aquisicaoServicosControle.clientes}" var="cliente" itemLabel="#{cliente.razao}" itemValue="#{cliente.cod}"/>
 												   
 				
</p:selectOneMenu>

meu converter

public class ConversorCli implements Converter {

    CliDAO clidao = new CliDAO();

    public Cli getAsObject(FacesContext context, UIComponent component, String value) {
    	
    	Cli cli = clidao.buscarCli(Integer.parseInt(value));
    	System.out.println(cli.getRazao());
        return cli;
    	
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
    	 if(value != null || value !="" && value instanceof Cli) {  
    		 
    		 return value.toString();  
    	 }else{
    		
    		 return null;
    	 }
    }

}

Quando executo o botao do formulario

<p:commandButton value="Cadastrar" label="Cadastrar" oncomplete="dlg.show()" update=":formdialogo:display"/>

apenas exibe as variaveis setadas no formulario para confirmação dos dados para cadastro
elas vem vazias

Resolvi o meu cenário, modifiquei um pouco o meu converter

package convertores;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import modelo.Mes;
import dao.MesDAO;

@FacesConverter(value="conversorMes", forClass=Mes.class)
public class ConversorMes implements Converter {

	MesDAO mesdao = new MesDAO();

   
    public Mes getAsObject(FacesContext context, UIComponent component, String value) {
    	if(value.trim().equals("")){
    		return null;
    	}	
    		else{
    			try{
    				Mes mes = mesdao.buscarMesId(Integer.parseInt(value));
    				System.out.println(mes.getNome()+"   "+mes.getId() );
        	
    				return mes;
    			} catch(NumberFormatException exception) {  
                    throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Mes Invalido"));  
                }  
    	}
    	
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
    	if (value == null || value.equals("")) {  
            return "";  
        } else {  
            return String.valueOf(((Mes) value).getId() );  
        }  
    }

}

e na view eu troquei o selectone para

<h:outputText value="Mes:" />
      <p:selectOneMenu  id="selectonemenumes" value="#{aquisicaoServicosControle.aquisicao.mes}" converter="conversorMes">
			    			
	     <f:selectItems value="#{aquisicaoServicosControle.meses}" var="mes" itemLabel="#{mes.nome}" itemValue="#{mes}"/>
			    	        		 
     </p:selectOneMenu>   

modifiquei o valor do ItemValue, passando todo o objeto

e retirei o dialog de um formulario proprio e
coloquei dentro do mesmo formulario e arrumei os update

.
.
.
<p:commandButton value="Cadastrar" label="Cadastrar" oncomplete="dlg.show()"
										 update="display" />
 			</p:panelGrid>	
 			
	<p:dialog modal="true" showEffect="fade" hideEffect="fade" widgetVar="dlg">
	 	<p:panelGrid columns="1" id="display">
		 		<h:outputText value="Ano : #{aquisicaoServicosControle.aquisicao.ano}"/>	
		 		<h:outputText value="Mes : #{aquisicaoServicosControle.aquisicao.mes.nome}"/>	
		 		<h:outputText value="Cliente : #{aquisicaoServicosControle.aquisicao.cliente.razao}"/>	
		 		<h:outputText value="Documento: #{aquisicaoServicosControle.aquisicao.contratado_documento}"/>	
		</p:panelGrid>
		 	 
		 	 
	</p:dialog>
</h:form>