H:selectOneMenu como recuperar valor para Objeto [RESOLVIDO com Seam]

3 respostas
J

Pessoal, já procurei e nao encontrei como fazer com que o ‘estado’ selecionado em um combo box, atualize o ‘estado’ da entidade ‘CadastroPF’.

A entidade ‘CadastroPf’ consegue ser gravada, mas o ‘estado’ não é salvo de jeito nenhum.

@Name("estadoList")
public class EstadoList extends EntityQuery<Estado> {
.
.
	public List<SelectItem> getListaEstado() {
		//return this.getResultList();
		ArrayList<SelectItem> lista = new ArrayList<SelectItem>();
		List<Estado> resultado = (List<Estado>) this.getResultList();
		
		for (Estado teste : resultado) {
			SelectItem item = new SelectItem(teste, teste.getUfEstado());
			lista.add(item);
		}
		return lista;
	}
.
.
}

View

<s:decorate id="idEstado" template="layout/edit.xhtml">
				<ui:define name="label">Estado</ui:define>
				<h:selectOneMenu value="#{cadastroPfHome.instance.estado}"
					>
					
					<f:selectItem itemValue="" itemLabel=":: Selecione ::" />
					<f:selectItems value="#{estadoList.listaEstado}" />
				</h:selectOneMenu>
			</s:decorate>

            <s:decorate id="nomeField" template="layout/edit.xhtml">
                <ui:define name="label">Nome</ui:define>
                <h:inputTextarea id="nome"
                               cols="80"
                               rows="3"
                              value="#{cadastroPfHome.instance.nome}"/>
            </s:decorate>
@Name("cadastroPfHome")
public class CadastroPfHome extends EntityHome<CadastroPf> {
.
.
	@Override
	protected CadastroPf createInstance() {
		CadastroPf cadastroPf = new CadastroPf();
		System.out.println(cadastroPf);
		return cadastroPf;
	}
.
.
}

Entidade CadastroPf

@Entity
@Table(name = "cadastro_pf")
@SequenceGenerator(name="SEQUENCE_ID", sequenceName="cadastro_pf_id_pf_seq", allocationSize=1)
public class CadastroPf implements java.io.Serializable {
.
.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_uf_estado")
private Estado estado;
.
.
}

PS: Esta estrutura foi toda gerada pelo Jboss Seam-gen, e estou tentando alterar o CRUD para deixá-lo funcional, mas não estou conseguindo isso.

Agradeço a todos.

3 Respostas

jrbilll

Pega o index do combobox com o metodo getSelectedIndex() e salve-o, na hora de usa-lo monte o select q compare com a tabela estados

J

Vo tentar utilizar o prime faces q trabalha com jsf2 (onde o trabalho com o combo fica bem mais facil). Pq o rich faces ainda não dá suporte a jsf2.

Obrigado.

J

Bem, consegui fazer ess recuperação com sucesso utilizando o s:selectItems ao invés de f:selectItems, e juntamente com isso usei o converter do proprio Seam. :smiley:

Obrigado.

Criado 22 de março de 2011
Ultima resposta 25 de mar. de 2011
Respostas 3
Participantes 2