Ajuda com selectonemenu[RESOLVIDO]

11 respostas
D

Erro de conversão ao definir o valor ‘3’ para ‘null Converter’.
Erro de conversão ao definir o valor ‘3’ para ‘null Converter’.

pessoal estou tomando este erro e nao consigo saber o que poder ser… sera que alguem poderia me ajudar.

pagina xhtml

<p:selectOneMenu id="cliente" value="#{clienteBean.cliente.id}" >
                	<f:selectItem itemLabel="Selecione o Cliente" itemValue="" />   
                    <f:selectItems value="#{clienteBean.lcliente}" 
     				 var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente.id}" />
                    <p:ajax update="custo" listener="#{clienteBean.montaComboCentroCusto}"/>  
                </p:selectOneMenu>  
            
                <h:outputLabel value="Centro de Custo:" /> 
	            <p:selectOneMenu id="custo" value="#{clienteBean.lcusto}"> 
	           	   <f:selectItem itemLabel="Selecione o Centro de Custo" itemValue="" /> 
                   <f:selectItems value="#{clienteBean.lcusto}" 
     				var="custo" itemLabel="#{custo.vcdescriacao_cc}" itemValue="#{custo.nmcod_cc}"/>
     				<h:panelGroup>
     					<f:facet name="start">  
	        				<h:graphicImage value="/img/loading.gif" />  
	   					</f:facet>
     				</h:panelGroup> 
	            </p:selectOneMenu>

abç!! a todos

11 Respostas

Hebert_Coelho

Esse erro acontece quando você altera o primeiro ou o segundo selectOne?

oliversistemas
Vê se isso já te ajuda: testeCli.xhtml
&lt;h:form id="formCli" prependId="false"&gt;

		Cliente:
		&lt;p:selectOneMenu id="comboCliente" value="#{clienteBean.cliente}"&gt;
			&lt;f:selectItem itemLabel="Selecione o Cliente"
				noSelectionOption="false" /&gt;
			&lt;f:selectItems value="#{clienteBean.lcliente}" var="cli"
				itemLabel="#{cli.nome}" itemValue="#{cli}" /&gt;
			&lt;p:ajax event="change" update="formCli" immediate="true" process="@this"
				listener="#{clienteBean.montaComboCentroCusto}" /&gt;
		&lt;/p:selectOneMenu&gt;

		<br />

		Centro de Custo:
		&lt;p:selectOneMenu id="comboCusto" value="#{clienteBean.custo}"&gt;
			&lt;f:selectItem itemLabel="Selecione o Centro de Custo"
				noSelectionOption="false" /&gt;
			&lt;f:selectItems value="#{clienteBean.lcusto}" var="c"
				itemLabel="#{c.vcdescriacao_cc}" itemValue="#{c}" /&gt;
		&lt;/p:selectOneMenu&gt;

	&lt;/h:form&gt;
ClienteBean.java
//imports omitidos
@ManagedBean
@SessionScoped
public class ClienteBean {

	private Cliente cliente = new Cliente();
	private Custo custo = new Custo();
	private List&lt;Cliente&gt; lcliente = new ArrayList&lt;Cliente&gt;();
	private List&lt;Custo&gt; lcusto = new ArrayList&lt;Custo&gt;();

	public ClienteBean() {
		Cliente c1 = new Cliente();
		Cliente c2 = new Cliente();

		c1.setId(1);
		c1.setNome("Nome Cliente 1");

		c2.setId(2);
		c2.setNome("Nome Cliente 2");

		lcliente.add(c1);
		lcliente.add(c2);
	}

	public String montaComboCentroCusto() {
		System.out.println("montaComboCentroCusto");

		lcusto = new ArrayList&lt;Custo&gt;();

		Custo custo1 = new Custo();
		custo1.setNmcod_cc(12.20);
		custo1.setVcdescriacao_cc("Fechar conta");

		Custo custo2 = new Custo();
		custo2.setNmcod_cc(33.50);
		custo2.setVcdescriacao_cc("Juros para conta");

		lcusto.add(custo1);
		lcusto.add(custo2);

		return "";
	}
// gets e sets omitidos mas DEVEM ser colocados
Veja aí e já dá um toque. Detalhe: usei primefaces 3.1.1
D

oliversistemas, tentei o que vc falou mais nao rolou continua dando o mesmo erro… so um deltalhe onde vc passa o objeto no item value eu passo o id, quando passei o objeto o segundo dropdwn nao funcionou, e dubugando reparei que ele mandou o objeto mesmo mesmo eu recuperando com cliente.getId();

jake frog, o problema ocorre quando eu clico no bt salvar acredito que seja no segundo menu ja que ele é preenchido com o id do primeiro.

obrigado pela ajuda pessoal!!!

oliversistemas

O problema pode estar no seu ClienteBean.java
Posta ele (completo, se puder) pra gente dar uma força.

D

oliver segue o manager bean…

package br.com.agm.manager;

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

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

import com.sun.faces.facelets.util.Path;

import br.com.agm.bean.CentroCusto;
import br.com.agm.bean.Cliente;
import br.com.agm.bean.Combo;
import br.com.agm.bean.Documento;
import br.com.agm.bean.Indexador;
import br.com.agm.business.CentroCustoBusiness;
import br.com.agm.business.ClienteBusiness;
import br.com.agm.business.DocumentoBusiness;
import br.com.agm.business.IndexacaoBusiness;


@ManagedBean(name="clienteBean")
@ViewScoped
public class ClienteBean implements Serializable{

	private static final long serialVersionUID = 1L;

	private Cliente 	cliente; 
	private Documento 	documento;
	private CentroCusto custo;
	private Indexador 	index;
	private Combo 		combo;
	
	private boolean ispainel;

	private List<Indexador> 	indexList;
	private List<Combo> 		lcombo;
	private List<CentroCusto> 	lcusto;
	private List<Cliente> 		lcliente;
	private List<Indexador> 	lindex;
	private List<Documento> 	ldoc;

	
	/**
	 * Metodo que preenche o dropdown com 
	 * todos os clientes cadastrados.
	 */
	@PostConstruct
	public void montaComboCliente(){
		
		try {

			cliente = new Cliente();
			ClienteBusiness clienteBusiness = ClienteBusiness.getInstance();
			lcliente = clienteBusiness.montaCombo();

			System.out.println(Path.class.getClassLoader().getResource(".").getFile());
			
		} catch (Exception e){
			System.out.println();
		}
	}

	/**
	 * Metodo que preenche o componte de DropDown, 
	 * com os centro de custos
	 */
	public void montaComboCentroCusto(){

		try {
			custo = new CentroCusto();
			CentroCustoBusiness centroCustoBusiness = CentroCustoBusiness.getInstance();
			lcusto = centroCustoBusiness.montaCombo(cliente);

		} catch(Exception e){
			System.out.println(e.getMessage());
		}		
	}

	


	/**
	 *
	 */
	public void renderizaCamposBusca(){
		
		IndexacaoBusiness 	indexBusiness = IndexacaoBusiness.getInstance();
		
		try {
			
			lindex = indexBusiness.montaCampoIndex(custo, cliente);
			ispainel = true;
			
		} catch(Exception e){
			System.out.println("metodo Renderiza: "+e.getMessage());		
		}

	}
	
	
	
	public static void main (String args[]){
		
		
		Documento documento = new Documento();
		documento.setNome("200145_0003");
		documento.setCaminho("//teste//img");

		Cliente cliente = new Cliente();	
		cliente.setId("4");
		
		try {

			DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();
			documento = documentoBusiness.explodeString(documento);
						
			
			documentoBusiness.salvarDocumento(documento, cliente);			
			documentoBusiness.moveApaga(documento, cliente);
			
			
		} catch(Exception e){
			System.out.println(e.getMessage());
		}

		
	}
	
	
	public String salvarDocumento(){

		try{
			
			Cliente cliente = new Cliente();
			cliente.setNome("teste");
			
			
			
			DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();		
			documentoBusiness.moveApaga(documento, cliente);
			
		}catch(Exception e){
			System.out.println("erro ao salvar o documento"+e.getMessage());
		}
		
		return "/digitaliza?faces-redirect=true";
		
	}



	/** Metodos Get e Set padrão do JSF*/

	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<Cliente> getLcliente() {
		return lcliente;
	}
	public void setLcliente(List<Cliente> lcliente) {
		this.lcliente = lcliente;
	}


	public CentroCusto getCusto() {
		return custo;
	}
	public void setCusto(CentroCusto custo) {
		this.custo = custo;
	}
	public List<CentroCusto> getLcusto() {
		return lcusto;
	}
	public void setLcusto(List<CentroCusto> lcusto) {
		this.lcusto = lcusto;
	}

	public Indexador getIndex() {
		return index;
	}
	public void setIndex(Indexador index) {
		this.index = index;
	}
	public List<Indexador> getLindex() {
		return lindex;
	}
	public void setLindex(List<Indexador> lindex) {
		this.lindex = lindex;
	}


	public List<Documento> getLdoc() {
		return ldoc;
	}
	public void setLdoc(List<Documento> ldoc) {
		this.ldoc = ldoc;
	}
	public Documento getDocumento() {
		return documento;
	}
	public void setDocumento(Documento documento) {
		this.documento = documento;
	}

	public Combo getCombo() {
		return combo;
	}
	public void setCombo(Combo combo) {
		this.combo = combo;
	}

	public List<Indexador> getIndexList() {
		return indexList;
	}

	public void setIndexList(List<Indexador> indexList) {
		this.indexList = indexList;
	}


	public List<Combo> getLcombo() {
		return lcombo;
	}


	public void setLcombo(List<Combo> lcombo) {
		this.lcombo = lcombo;
	}



	public boolean isIspainel() {
		return ispainel;
	}



	public void setIspainel(boolean ispainel) {
		this.ispainel = ispainel;
	}

}

abç

Hebert_Coelho

O seu segundo select aponta para uma classe.

Olha o value apontando para o lcusto (que é uma classe). Ou você aponta para algum int/string na classe MB ou você cria um Converter.

Esse post aqui vai te ajudar com converter: JSF: Converter e Bean Auto Complete.

D

jakefrog desculpe cara mais sou novo nessa parada de JSF, eu nao entendi o que vc quiz dizer poderia ser mais especifico…

obrigado
abç!

Hebert_Coelho

dark neo:
jakefrog desculpe cara mais sou novo nessa parada de JSF, eu nao entendi o que vc quiz dizer poderia ser mais especifico…

obrigado
abç!

Quando você faz um selectOne apontando (value=“meuMB.nome”) para um int/string ele funfa numa boa.

Caso você aponte o selectOne (value=“meuMB.pessoa”) para uma classe você precisa de um converter. o link q eu postei ensina a fazer um converter para jsf. [=

D

humm entendi… mais no caso eu estou apontando pra um clienteBean.cliente.id, pelo o que entendo aqui estou pegando o id do cliente tanto que a outra selectonemenu lista os centros de custo desse cliente corretamente, o problema é quando eu vou pra segunda e seleciono o centro de custo e clico em buscar… ai tomo aquele erro do converter null… teria como me dar uma força nisso??

abç e obrigado!!

gabrielfrios
<p:selectOneMenu id="custo" value="#{clienteBean.lcusto}">

Você está apontando o retorno de um selectONEMenu para uma lista.

D

obrigado gabrielfrios era este o problema… vlw mesmo

e obrigado jakefrog, pela ajuda tb

o pior que eu nem reparei nisso :frowning:

abç!!

Criado 14 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 11
Participantes 4