Dúvida com SelectOneMenu

Olá !
Estou com uma dúvida GIGANTE sobre como eu pego os dados do Banco de dados em listo em um SELECTONEMENU, preciso urgente de ajuda! estou usando jsp com MANAGED BEANS sei que seria bom usar SERVLET, mas já fiz desta forma e agora quero usar o MANAGED BEANS (o que estou estudandoa agora), segue meu JSP, ta,bém não estou conseguindo usar muito bem o conceito de lista.
Obrigado!

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>

<f:view>

Relatórios <%@ include file="/include/pageTitleStart.jsp"%> Relatórios EDIWEB <%@ include file="/include/leftMenu.jsp"%> &nbsp &nbsp &nbsp &nbsp <%@ include file="/include/footer.jsp"%> [/code]Meu Bean [code]package br.com.garantech.mb;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.garantech.conectar.Conectar;

public class CarregaCombo {
private Connection getcon;
public CarregaCombo() {
this.getcon = new Conectar().getcon();
}
List Revendedores = new ArrayList();
public List getRevendedores() throws SQLException {
String sql = “Select * from cliente”;
Revendedores = (List) getcon.prepareStatement(sql);
return Revendedores;
}
public void setRevendedores(List revendedores) {
Revendedores = revendedores;
}

private String nome1 = "Carrega 1", nome2 = "Carrega 2",
		nome3 = "Carrega3";

public String getNome1() {
	return nome1;
}

public void setNome1(String nome1) {
	this.nome1 = nome1;
}

public String getNome2() {
	return nome2;
}

public void setNome2(String nome2) {
	this.nome2 = nome2;
}

public String getNome3() {
	return nome3;
}

public void setNome3(String nome3) {
	this.nome3 = nome3;
}

}
[/code]

Uma forma seria fazendo um consulta que retorna uma lista e passar esta lista para o selectOneMenu…
Porém não é a mais elegante e nem a mais recomendavel.

A melhor forma seria criar um converter para isso!

[quote=fernandogodoy18]Uma forma seria fazendo um consulta que retorna uma lista e passar esta lista para o selectOneMenu…
Porém não é a mais elegante e nem a mais recomendavel.

A melhor forma seria criar um converter para isso![/quote]
Mas como faço essa consulta e retorno em uma lista ?

Vou passar um exemplo para cidades e estados.

MangedBean:

privante List<Municipio> municipios;
privante List<Uf> Ufs;
private Long uf;
private long municipio;

****getters e setters omitidos***

e mais estes mentodos que são invocados na tela:

public List<Uf> getListaUfs() {
        MunicipioDao mdao = new MunicipioDaoImpl();
        ufs = mdao.consultaUf();
        return ufs;
    }

    public void listaMunicipios() {
        MunicipioDao mdao = new MunicipioDaoImpl();
        municipios = mdao.consulta(uf);
    }
View

<h:SelectOneMenu id="uf" value="#{ExemploMB.uF"}>
    <f:selectItem itemLabel="SELECIONE" itemValue=""/>

    <f:selectItems value="#{ExemploMB.listaUfs}" var="a" itemValue="#{a.idUf}" itemLabel="#{a.nomeUf}"/>  ** passando uma lista de estados **
 
   <p:ajax upate="municipio" evente="change" listener"#{ExemploMB.listaMunicipios}" />** aqui eu do um update no selectOneMenu de municipios pelo ID do compoente**
</h:SelectOneMenu>

<h:SelectOneMenu id="municipio" value="#{ExemploMB.municipio"}>
   <f:selectItem itemLabel="SELECIONE" itemValue=""/>
    <f:selectItems value="#{ExemploMB.municipios}" var="b" itemValue="#{b.idMunicipio}" itemLabel="#{a.nomeMunicipio}"/>
</h:SelectOneMenu>

Dai é so implementar sua consulta da forma que vc achar melhor.

por exemplo


DAO

public List<Uf> consultaUf(){
List<Uf> lista = new ArrayList<Uf>();
Criteria crit = HibernateUtil.getSession.createCriteria(Uf.class);

return crit.lista();

Só um exemplo bem basicão.
Pra vc ter uma idéia…

Fernando, essa parte de popular a select consegui, mas quando vou recuperar o id do item selecionado e passar ele como parametro para uma inserção no BD, ocorre um erro do tipo “javax.faces.el.EvaluationException: java.lang.NullPointerException”. Faço um controle dos valores setados por meio do console, é recuperado o valor, mas quando ele vai ser setado dá pau.
Há algum material que vc recomenda para dar uma estudada, revirei o guj atras de repostas, mas até agora nada. Olha como estou fazendo o processo.

Meu Bean:

	public String update() {

		System.out.println("Valores antes do set: idSeleção " + idSelecao
				+ " Produção " + producao);

		funcionario.setCodigo(idSelecao);
		funcionario.setProducao(producao);

		System.out.println("Valores depois do set: idSeleção " + idSelecao
				+ "Produção " + producao);

		FuncionarioDAO dao = new FuncionarioDAO();

		dao.UPDateProducao(funcionario);

		return idSelecao + "" + producao;

	}

	public List<SelectItem> getSelecaoFuncionarios() {

		System.out.println(idSelecao + " Seleção");
		List<Funcionario> funcionarios = new FuncionarioDAO().getLista2();

		List<SelectItem> itens = new ArrayList<SelectItem>();

		for (Funcionario funcionario : funcionarios) {
			itens.add(new SelectItem(funcionario.getCodigo(), funcionario.getNome()));
		}
		return itens;
	}

	public void enviar(ActionEvent event) {

		System.out.println("Valores no Enviar: idSeleção " + idSelecao
				+ " Produção " + producao);
	}
}

Minha jsp:

<f:view>
		<h:form>
			<h:panelGrid>
				<h:outputLabel>
					<h:selectOneMenu value="#{userBean.idSelecao}">
						<f:selectItems id="idSelecao"
							value="#{userBean.selecaoFuncionarios}" />
					</h:selectOneMenu>
				</h:outputLabel>
				<h:outputLabel />Quantidade: <h:inputText
					value="#{userBean.producao}" />
				<h:commandButton action="#{userBean.update}" value="Enviar"
					actionListener="#{userBean.enviar}"/>
			</h:panelGrid>
		</h:form>
	</f:view>

Qual escopo vc está usando ?

Request. Amanhã vou mudar para Session, será que é isso? :shock: