JSF - Problema com SelectItem

4 respostas
anderson.bonavides

Pessoal estou com um problema aqui mais que urgente para um amigo que está para concluir seu curso amanhã.

Vamos ao problema:

Tenho um um Combobox com RichFaces que funciona perfeitamente. Ele exibe os dados direitinho mas só que eu preciso salvar são seus ID’s que farão a função de chave estrangeira e ele envia uma String para ser salva no banco.

Segue meu código

<h:outputText value="Causa da Morte do Doador:" />
	<rich:comboBox selectFirstOnUpdate="true" value="#{registroBean.registro.causaMorteDoador}" >
		<f:selectItem itemValue="Selecione..."/>
        <f:selectItems value="#{registroBean.causaMortes}" />
</rich:comboBox>

public List<SelectItem> getCausaMortes() { causaMortes = new ArrayList<SelectItem>(); List<Causamorte> causaMorte = causaMorteDAOImpl.listar(); for (Causamorte c : causaMorte) { causaMortes.add(new SelectItem(c.getDescricao())); } return causaMortes; }

Pessoal fico muito grato pela ajuda de voces.

Grato!

4 Respostas

G

O combo do richfaces funciona como uma lista de Strings, diferentemente de um combo normal, onde vc guarda chave, e valor. Com o combo do richfaces, você não vai poder pegar a chave, somente o valor. Use um selectOneMenu normal.

Giulliano

Uma POG seria concatenar isso…mas iria ficar horrível.

vi-gb

O richfaces retorna uma String mas nela contem o id que vc informou na criacao do item, entao e so converter para inteiro.

Seu codigo de criacao ficaria assim:

public List<SelectItem> getCausaMortes() {
	causaMortes = new ArrayList<SelectItem>();
	List<Causamorte> causaMorte = causaMorteDAOImpl.listar();
	for (Causamorte c : causaMorte) {
//Passando id para recuperar e descricao para exibir
		causaMortes.add(new SelectItem(c.getId(), c.getDescricao()));	
	}
	return causaMortes;
}
anderson.bonavides

É eu consegui resolver isto sim, tive que fazer o ajuste como citado no ultimio post pelo amigo vi-gb e tive que trocar de rich:combobox para h:selectOneMenu como citado pelo nosso amigo guimoz.

Grato a todos.

Criado 3 de dezembro de 2009
Ultima resposta 5 de dez. de 2009
Respostas 4
Participantes 4