Como pegar id do selectOneMenu

gostaria de pegar o id da combo que foi selecinada mas não consigo.
estou tentado o seguinte…

[size=18]pagina jsf[/size]

[code]<?xml version='1.0' encoding='UTF-8' ?>

Facelet Title

Gerenciador de Cadastros


        </p:layoutUnit>
    </p:layout>

    
    <p:dialog header="Cadastro de raca" widgetVar="dialogRaca"  resizable="false" modal="true" showEffect="slide" width="370">
        <h:form prependId="false">
            <h:panelGrid id="infosRaca" columns="2" style="margin-bottom:10px">

                <h:outputLabel for="nome" value="Nome da Raça:" />
                <h:inputText id="raca" value="#{racaController.raca.nome}"/>
                
                <h:outputLabel for="tipoRaca" value="Tipo do Animal:" />
                <h:selectOneMenu id="raca_tipo" value="#{racaController.raca.tipoAnimalIdtipoAnimal}">
                    <f:selectItems  value="#{racaController.listarTipoAnimal}"/>
                </h:selectOneMenu>


                <p:commandButton oncomplete="dialogRaca.hide();" actionListener="#{racaController.adicionarRaca()}" value="Cadastrar Nova Raca"/>

            </h:panelGrid>
        </h:form>
    </p:dialog>
</h:body>

[/code]

esse racaController.listarTipoAnimal me traz a lista dos tipos de animais gravados no bd…

o meu [size=18]maneger bean[/size] tá assim

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package controller;

import entity.Raca;
import entity.TipoAnimal;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import persistence.BaseDAO;

/**
*

  • @author Danillo
    */
    @ManagedBean
    @SessionScoped
    public class RacaController {

    private Raca raca;
    private DataModel lstTipo;
    private DataModel listaRaca;

    public Raca getRaca() {
    return raca;
    }

    public void setAcao(Raca raca) {
    this.raca = raca;
    }

    public DataModel getListarTipoAnimal(){
    List lista = new BaseDAO().findAll(“SELECT t FROM TipoAnimal t”);
    lstTipo = new ListDataModel(lista);
    return lstTipo;
    }

    public void novoRaca() {
    setAcao(new Raca());
    }

    public void adicionarRaca() {
    // getRaca().setTipoAnimalIdtipoAnimal(tipoanimal);
    new BaseDAO().create(getRaca());
    }

}[/code]

se alguem puder me ajuadar fico grato!!!

Tenta tipo assim, usando o SelectItem como retorno no seu List:


public List<SelectItem> getUnidadeFederalListCombo() {

   List<SelectItem> unidade = new ArrayList<SelectItem>();
   Object id;
   
   List<UnidadeFederal> listaUnidadeFederal = new UnidadeFederalDao().getUnidadesFederal();

   for(int i=0; i<listaUnidadeFederal.size();i++) {

     UnidadeFederal unidadeFederal = (UnidadeFederal) listaUnidadeFederal.get(i);
     id = unidadeFederal.getId();
     unidade.add(new SelectItem(id.toString(), unidade.getNome() ));
   
     return unidade;

   }
 

}

e… fica assim…

<h:selectOneMenu id="tufeId" value="#{UfBean.unidadeFederal.id}">
   <f:selectItems value="#{seuBean.unidadeFederalListCombo}"
</h:selectOneMenu>

mais ou menos isso… ele vai retornar o id que vc esta passando no selectItem…

[color=red]não não assim não deu certo tb… mas valeu [size=18]gustavoliveira[/size][/color]

não retornou o id para o seu objeto?

Não!!! Quando debuga a variavel tipoAnimalIdtipoAnimal no objeto Raca vem como nulll…
mas mesmo assim valeu pela força

Cara faça o seguinte,

O que o cara ali em cima falou não está errado mas parece faltar alguma coisa. Faça o seguinte:

No bean coloqeu os seguintes metodos:


	public List<SelectItem> getFuncionarios(){
		List<SelectItem> tempFunc = new ArrayList<SelectItem>();

		tempFunc.add(new SelectItem("1","Menos de 10 Funcionarios"));
		tempFunc.add(new SelectItem("2","Entre 10-100 Funcionarios"));
		tempFunc.add(new SelectItem("3","Entre 100-1000 Funcionarios"));
		tempFunc.add(new SelectItem("4","Mais de 1000 Funcionarios"));


		return tempFunc;
	}

Aqui em cima é o seguinte, voce está adicionando os elementos na lista do combobox. Onde os parametros ali new SelectItem([color=red] “1”[/color],[color=blue]“Menos de 10 Funcionarios”[/color]) [color=red]o primeiro [/color] é o id que o elemento ira ter, [color=darkblue]o segundo parametro[/color] é o nome que vai aparecer.

Coloque tambem no bean esse metodo:


private String idTitulo = "";

public void changeTitulo(ValueChangeEvent event){
		idTitulo = event.getNewValue().toString();
}

No xhtml coloque assim,

<h:selectOneMenu id="combo_titulo_usuario" value="#{bean_usuario.idTitulo}"> <f:selectItems value="#{bean_usuario.titulo}" /> </h:selectOneMenu>

Ai ele vai pegar o valor da id que foi clicadda,

tenta ai qualquer cois fala;

Abs