Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresCódigo-Fonte Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Você está aqui: JSF - Java Server Faces ::: JSF HTML Tags ::: e

Como preencher um controle <h:selectOneMenu> com informações de uma tabela do banco de dados

Quantidade de visualizações: 13082 vezes
Em algumas ocasiões gostaríamos de preencher um controle <h:selectOneMenu> com informações de uma tabela do banco de dados. Isso é muito comum em formulários de cadastro, nos quais apresentamos uma lista de cidades ou categorias e o usuário deverá escolher uma entre as opções disponibilizadas.

Para isso vamos começar criando uma tabela em um banco de dados. Aqui vou usar o MySQL, mas, você poderá usar qualquer banco, bastando alterar os parâmetros de conexão. Veja a instrução SQL CREATE TABLE que cria uma tabela chamada "categorias":

DROP TABLE IF EXISTS categorias;
CREATE TABLE categorias(
  id int(10) unsigned NOT NULL auto_increment,
......


Por simplicidade esta tabela possui apenas os campos id (auto-incremento) e nome da categoria. Vamos passar para o JavaServer Faces agora. Abra o NetBeans, Eclipse ou sua IDE favorita, crie uma nova aplicação JSF e adicione a seguinte classe de conexão:

Código para Conexao.java:

package banco;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao{
  static String url = "jdbc:mysql://localhost/estudos";
  static String usuario = "root";
  static String senha = "osmar1234";
  static Connection conn = null;

  public static Connection getConexao(){
    if(conn != null){
      return conn;
    }
    else{
      try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, usuario, senha);
......


Faça as devidas alterações nesta classe de conexão e vamos criar um bean gerenciado JSF com o nome de Categoria, que representará cada uma das categorias obtidas a partir do banco de dados. Veja o código:

Código para Categoria.java:

package entidades;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Categoria implements Serializable {
    private int id; // id no banco de dados
    private String nome;

    // construtor padrão
    public Categoria() {
    }

    // construtor alternativo
    public Categoria(int id, String nome) {
......


Agora precisamos de uma classe que servirá como ponte entre a entidade Categoria e sua correspondente tabela no banco de dados. Vamos chamá-la de CategoriaDAO e vamos criá-la como um bean gerenciado JSF. Veja o código:

Código para CategoriaDAO.java:

package entidades;

import banco.Conexao;
import java.io.Serializable;
import java.sql.*;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class CategoriaDAO implements Serializable {

    public CategoriaDAO() {
    }

    // método que permite obter a lista de categorias no
    // banco de dados e retorná-la para exibição no controle
    // <h:selectOneMenu>
    public ArrayList<Categoria> getListaCategorias() {
        ArrayList<Categoria> listaCategorias = new ArrayList<Categoria>();

        // obtém a conexão com o banco de dados
        Connection conn = Conexao.getConexao();
......


Finalmente, eis o código para um página JSP ou Facelets contendo o controle <h:selectOneMenu> que exibirá todas as categorias da tabela do banco de dados:

Código para index.xhtml:

<?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">
    <h:head>
        <title>Estudos JSF</title>
    </h:head>
    <h:body>
       <h4>Cadastro de Produtos</h4>

       <h:form>

          Categoria:<br />
......


Veja que fornecemos o valor "#{produto.categoria}" para a propriedade value do controle <h:selectOneMenu>, ou seja, o valor selecionado será atribuido e recuperado de uma propriedade categoria do tipo int ou long em um bean Produto. Em seguida fornecemos o valor "#{categoriaDAO.listaCategorias}" para a propriedade value do elemento <f:selectItems>. Isso já faz com que a tag tenha acesso a todos os itens do ArrayList de categorias. Ainda neste elemento nós usamos sua propriedade var para definir o nome pelo qual os itens poderão ser referenciados. Desta forma, itemLabel receberá o nome da categoria e itemValue receberá o id.

Para que o exemplo funcione corretamente, crie um bean Produto contendo id, nome e categoria (declare categoria do tipo int). Crie também um bean produtosDAO contendo um método gravar().

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de JSF - Java Server Faces

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 28 usuários muito felizes estudando em nosso site.