Erro Conversão em RichComboBox

5 respostas
andresmafra

Pessoal estou de volta!

Bem, antes de postar aqui procurei em inumeros foruns e livros.

Me ajudem, por favor!

Estou com um problema no meu rich:combobox, segue meu .jsp

<rich:comboBox id="teste" converter="br.iteratorsystems.cps.beans.TesteConverter" enableManualInput="false" value="#{administrationBean.testeObj}" styleClass="letrasDefault">
								<f:selectItems value="#{administrationBean.preencheComboTeste}"/>							
							</rich:comboBox>

segue uma parte do meu bean, onde carrega o combo

public List<SelectItem> getPreencheComboTeste() {
		Teste teste = new Teste();
		Teste teste2 = new Teste();
		
List<SelectItem> lista = new ArrayList<SelectItem>();
		teste.setCodigo(1000);
		teste2.setCodigo(2000);
		teste.setNome("Xi Marquinho");
		teste2.setNome("Deu Certo");
		
                lista.add(new SelectItem(teste,String.valueOf(teste.getCodigo())));
		lista.add(new SelectItem(teste2,String.valueOf(teste2.getCodigo())));
		
                return lista;
	}

obs: minha classe Teste esta com equals e hashCode

e minha classe converter

package br.iteratorsystems.cps.beans;

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

public class TesteConverter implements Converter{
	
	public final static String CONVERTER_ID = "br.iteratorsystems.cps.beans.AdministrationBean";

	public Teste getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		Teste t = null;
		try{
			
			if(arg2 == null) {
				return null;
			}
			Integer.parseInt(arg2);
			t = new Teste();
			t.setNome(arg2);
			
		}catch (Exception e) {
			e.printStackTrace();
		}
		return t;
	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		
		if(arg2 == null) {
			return null;
		}
		
		if(arg2 instanceof Teste) {
			return ((Teste) arg2).getNome();
		}
		
		return arg2.toString();
	}
}

O problema é que quando faço o parse para Integer, não vem o código da classe teste, e sempre o nome!!

Alguem pode me ajudar? nao sei onde estou errando…

abraços…!

5 Respostas

andresmafra

Alguem?

J

Cara, estou com muito sono para pensar e responder, olha o meu código do converter que funciona, e verifica se o converter está registrado no faces-config.xml.

public class TurmaConverter implements Converter {  
  
    public Object getAsObject(FacesContext ctx, UIComponent component, String value) {  
        if (value != null) {  
            return this.getAttributesFrom(component).get(value);  
        }  
        return null;  
    }  
  
    public String getAsString(FacesContext ctx, UIComponent component, Object value) {  
  
        if (value != null  
                && !"".equals(value)) {  
  
        	Turma entity = (Turma) value;  
  
            this.addAttribute(component, entity);  
  
            Long codigo = entity.getCodigo();  
            if (codigo != null) {  
                return String.valueOf(codigo);  
            }  
        }  
  
        return (String) value;  
    }  
  
    protected void addAttribute(UIComponent component, Turma o) {  
        String key = o.getCodigo().toString(); 
        this.getAttributesFrom(component).put(key, o);  
    }  
  
    protected Map<String, Object> getAttributesFrom(UIComponent component) {  
        return component.getAttributes();  
    }
juniorsatanas

andresmafra e teu converte cara !

andresmafra

Cara, pra falar a verdade eu desisti disso por causa do tempo para desenvolver aqui, e então utilizei o

<h:selectOneMenu/>

Abraços!

juniorsatanas

andresmafra hahahh Boa escolha !

Criado 19 de junho de 2010
Ultima resposta 20 de ago. de 2010
Respostas 5
Participantes 3