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.
/* 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.
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!
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!