List Box - JSF

Pessoal estou querendo litar alguns cliente do banco na tela. Pensei em um list box mas não consigo nenhum q exiba estes clientes. Alguem poderia dar uma dica?

Quase esquecia. Estou utilizando JSF

Pessoal eu fiz assim.

<h:selectOneListbox value="#{projeto.project.nomeCliente}"> <f:selectItem itemValue="Anderson" itemLabel="Anderson"/> </h:selectOneListbox>

Só que ao invés de ficar esse nome firme eu queria selecionar do banco de dados. Tem como?

.

Alguem poderia ajudar?
To precisando muito.

:frowning:

Bom vou dar uma ajuda rápida pois já sofri com isso também.

vou dar mastigado :wink:

[color=blue]Cria um Bean de conexão:[/color]

import java.sql.*;
public class Conexao {
	
	public Connection getStartConexao()
	{
		Connection connection = null;
		try
		{
			//Class.forName("oracle.jdbc.driver.OracleDriver");
			String driverName = "org.postgresql.Driver";
			Class.forName(driverName);		
			
			String url = "jdbc:postgresql://localhost:5432/MeuBanco";			
			String username = "postgres";
			String password = "123456";
			connection = DriverManager.getConnection(url, username, password);
			
			return connection;
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
			return null;
		}
		
	}	
	
}

[color=blue]Cria uma Classe de Clientes, e lista todos cliente cadastrados no banco de dados, adicionando e retornando em uma arraylist.[/color]


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

import conexaoBD.Conexao;

public class GrupoCliente {
	private int cod_cliente;
	private String descricao;
	private ArrayList<SelectItem> todosCliente;
	
	public GrupoCliente() {

	}
	
	public  ArrayList<SelectItem> getTodosCliente(){
		Conexao conexao = new Conexao();
		Connection connection = conexao.getStartConexao();
		ResultSet rs;
		Statement stmt;
		todosCliente = new ArrayList<SelectItem>();
				
		try		
		{
			StringBuffer sql = new StringBuffer();
			sql.append("select * from Cliente order by descricao_cliente");			
			stmt = connection.createStatement();
	        rs = stmt.executeQuery(sql.toString());
	        String descricao;
	       	String codigo;
	        while (rs.next())	        	
	        {
	        	codigo = rs.getString("cod_cliente");
	        	descricao = rs.getString("descricao_cliente");
	            todosCliente.add(new SelectItem((codigo), descricao)); // pego o código e a descrição Cliente	   
	            
	        }			
	        return todosCliente;   
	     }
        catch (Exception e)
        {
        	System.out.println(e.getMessage());
        	return todosCliente;
        }	
        
	}	
	
	public int getCod_cliente() {
		return cod_cliente;
	}
	
	public void setCod_cliente(int cod_cliente) {
		this.cod_cliente = cod_cliente;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}	
}

[color=blue]agora na sua pagina .JSP, coloque a tag desta forma.[/color]


<h:selectOneListbox value="#{funcionario.cod_cliente}" styleClass="edit" style="width: 248px; height: 223px">
						<f:selectItems value="#{grupoCliente.todosCliente}"/>
						</h:selectOneListbox>

[color=blue]observações importantes no código acima: [color=red]value="#{funcionario.cod_cliente}" [/color] seria uma outra classe onde salvaria o código da chave estrangeira, ao inves de salvar a descrição monstrada ele salva o ID, você pode mudar no seu gosto, [color=red]value="#{grupoCliente.todosCliente}"[/color] listam todos os seus clientes monstrando na Listbox, detalhe importante NUNCA esqueça de colocar o ‘s’ no final f:selectItems pois você esta retornando uma lista e não apenas um valor, isto serve tambem para Combox só trocar [color=blue]h:selectOneListbox por h:selectOneMenu[/color][/color], não esqueça de setar no faces-config.

veja se isso resolve seu problema, Alex Delgado.

http://courses.coreservlets.com/Course-Materials/pdf/jsf/06-Event-Handling.pdf

http://courses.coreservlets.com/Course-Materials/pdf/jsf/07-HTML-Library.pdf