Como pegar id do selectOneMenu

5 respostas
D

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

[size=18]pagina jsf[/size]

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
         <p:layout fullPage="true">
            <p:layoutUnit position="west" size="200" header="Atividades" resizable="true" closable="false" collapsible="true">
                <h:form prependId="false">
                          <p:commandLink value="Nova Raça" actionListener="#{racaController.novoRaca()}" update="infosRaca" oncomplete="dialogRaca.show()"/><br/>
                </h:form>
            </p:layoutUnit>
            <p:layoutUnit position="center">
                <h1>Gerenciador de Cadastros</h1>
                <br/>
                
            </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>
</html>

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

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

/*
 * 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<TipoAnimal> lista = new BaseDAO<TipoAnimal>().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<Raca>().create(getRaca());
    }

}

se alguem puder me ajuadar fico grato!!!

5 Respostas

gustavoliveira

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…

D

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

gustavoliveira

não retornou o id para o seu objeto?

D

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

Thyago1

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

Criado 13 de setembro de 2011
Ultima resposta 14 de set. de 2011
Respostas 5
Participantes 3