Você está aqui:
JSF - Java Server Faces :::
JSF HTML Tags ::: |
|||||
Como preencher um controle <h:selectOneMenu> com informações de uma tabela do banco de dadosQuantidade de visualizações: 13225 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":
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:
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:
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:
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:
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(). |
|||||
|
|
|||||
Veja mais Dicas e truques de JSF - Java Server Faces |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





