Combobox - Richfaces

Olá amigos,

Acabo de me cadastrar nesse portal que ultimamente vem me ajudando muito. Todas as dúvidas que surgiram durante os ultimos tempos foram encontradas aqui, exceto a dúvida que irei postar agora.

Estou usando o JSF com o RICHFACES 3.2 e optei por utilizar o combobox. Eu tinha um selectOneMenu que está funcionando perfeitamente então o que fiz foi incluir na mesma pagina o combobox usando a mesma lista de selectItem para ambos.

O problema é que o combobox não mostra o valor que eu “setei” no setLabel. Ele me mostra somente o valor setado no setValue. Lembrando que essa mesma lista funciona perfeitamente no selectOneMenu.

Acredito que deve ser uma falta de atenção minha, mas já procurei por toda parte e não consegui encontrar.
Obrigado pela atenção de todos.

JSP:
<r:comboBox id=“pais”
selectFirstOnUpdate=“false”
defaultLabel="#{bundle.textEscolhaOpcao}">
<f:selectItems value="#{geController.gePaisList}" />
</r:comboBox>

CONTROLLER:
public String selectItemsGePais() {
try {

gePaisDAO gePaisDAO;
gePaisDAO = new gePaisDAO();

this.setGePaisList(gePaisDAO.selectItems());
return "selectItemsGePaisSucess";

} catch (Exception ex) {
  ex.printStackTrace();
  return "selectItemsGePaisError";
}

}

DAO:

public List selectItems(){
try{

 /* Variaveis necessárias */
 List         lGePais = this.searchAll();
 ListIterator iGePais = lGePais.listIterator();
 List ret             = new ArrayList();
 
 /* Abri o meu LIST e instanciei o RET com os valores String.*/
 while(iGePais.hasNext()){
     
   gePais gePaisItem = (gePais)iGePais.next();       
   SelectItem si     =  new SelectItem(); 
   
   si.setValue(gePaisItem.getIdPais());
   si.setLabel(gePaisItem.getNome());
           
   ret.add(si);
 }
 
 return ret;
 
}catch (Exception ex){
    ex.printStackTrace();
    return null;
}

}

Pagina Rodando:

Eu gostaria de o label fosse mostradao e não o ID.

Bom dia galera.
Estou na mesma que o lblanco .
E gostaria de saber tb se tem algum suporte para ajax que funcione tanto para IE como para FF.
Grato.

“When using selectItem(s) for suggestion definition you should define only value of the selectItem. It is used both for displaying and storing.” - http://livedemo.exadel.com/richfaces-demo/richfaces/comboBox.jsf

Se vc quiser usar ele, vai ter que colocar um selectItens dos seus objetos e fazer converters pra ele =|

Credu!
Parei entao.
Mais trabalho so por causa duma carinha bunitinha to fora, se um dia realmente precisar por outro motivo talvez.
E ainda por cima nao funciona igual pra qualquer navegador.
Obrigado pela dica!

Bom dia Amigos,

Eu entendi o que Eklam disse, porém não sei fazer :slight_smile:
De qualquer forma vou tentar quebrar um pouco a cabeça aqui e se conseguir eu posto aqui para vocês.

fmauro eu esto tentando usar ele porque além de ser mais bonito é mais pratico também.
Abraços e obrigado a todos.

Olá… Sei que este tópico já está um pouco antigo, mas vale a pena ajudar nessa questão já que não encontrei nenhuma resposta prática na internet para isso…

Esse problema geralmente ocorre devido ao componente combobox do Richfaces “facilitar” sua vida, fazendo você passar dentro do vetor de SelcectItem o objeto diretamente no .setValue. Mas e ai? Como fazer para que apareça o nome do Estado, Cidade ou o que for listar no combo? Simples, na entidade é só você dar um @Override no .toString() porque na hora de pegar o valor do combobox, o richfaces pega o objeto.toString(); Coloque isso na sua classe entidade:

    @Override
    public String toString() {
        return this.nome;
    }

Vou dar um exemplo de como criar no MB (Classe de Controle) uma chamada para pegar os registros:

[code]
public SelectItem[] getListaTodasContas() {
List listaContas = DAOConta.getList(10000);
List listaSelect = new ArrayList(listaContas.size());
SelectItem aux;

	for(Contas c : listaContas){
        aux = new SelectItem();
        aux.setLabel(c.getNome());
        aux.setValue(c);

        listaSelect.add(aux);
	}
	return listaSelect.toArray(new SelectItem[listaSelect.size()]);
}[/code]

E o mais facil é que ao invez de você ter que pegar o ID depois, vc ja tem o objeto ali prontinho para vc dar o save() no banco. Espero ter ajudado!

thiago, estou com o mesmo problema…

fiz o que disse, consegui mostrar na combo o nome ao inves do Id, só que não consigo salvar, é como se a combo do richfaces nao retornasse nada

o que vc coloca no value do rich:comboBox ?