Da Base de Dados para o SelectOneMenu

10 respostas
rapha.java

[i]Pessoal estou com uma grande dúvida!
Estou fazendo um pequeno projeto em que uma combo “SelectOneMenu” puxa da base de dados os nomes dos Revendedores, porém não estou conseguindo fazer isto.Já tentei de varias formas e… NADA !!! :cry:
Alguém poderia me ajudar? Como faço isso SEM O HIBERNATE, devo adicionar em uma lista primeiro?
Muitas duvidas e pouca coisa feita me ajudem ? :?:
:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

10 Respostas

drsmachado

Então, tive sérias dificuldades com este componente.
Quando preciso utilizá-lo, eu crio um array de algum objeto que pode ser mostrado (String, Integer, Long) e associo-o ao f:selectItems como value.

ddark.emanu

você pode fazer a lista de Revendedores , uma lista de SelectItem e fazer a seguinte estrutura na view :

<h:selectOneRadio  value="#{seuController.lista} ">
      <f:selectItems value="#{seuController.listaSelectItens}" /> 
 </h:selectOneRadio>
rapha.java

ddark.emanu:
você pode fazer a lista de Revendedores , uma lista de SelectItem e fazer a seguinte estrutura na view :

<h:selectOneRadio value="#{seuController.lista} "> <f:selectItems value="#{seuController.listaSelectItens}" /> </h:selectOneRadio>


Obrigado ddark.emanu, mas o q seria esta : “SelectItem q vc eta dizendo” e este “listaSelectItem” também
vc poderia me explicar ? :roll:
Obrigado desde já !

E

No arquivo .JSP:

<h:selectOneMenu id=“campoX” value="#{meuBeans.valor}" >
<f:selectItems value="#{meuBeans.lista1}" />
</h:selectOneMenu>

Em meuBeans :

private String valor;

public String getValor()

{ return this.valor; }

public voi setValor(String valor)

{ this.valor = valor; }
// Monta a lista

private List meuSelect;

public List getLista1()

{

String sValor ,  sDescricao;

meuSelect.clear();
/// ---- coloque aqui seu acesso ao banco para buscar o sValor e sDescricao, necessários para montar o selectOneMenu

/// --- Para cada linha recuperada no banco, dê o comando
       meuSelect.add( new SelectItem(sValor , sDescricao));
// no final, retorne a lista

return meuSelect;

}
//// — se fosse criar na manualmente seria assim:

public List getLista1()

{

meuSelect.clear();
meuSelect.add( new SelectItem("AC", "Acre"));
meuSelect.add( new SelectItem("AM", "Amazonas"));
meuSelect.add( new SelectItem("BA", "Bahia"));

return meuSelect;
}

ddark.emanu

O componente h:selectOneMenu não recebe uma lista de objetos , então você terá que transformar sua lista de objetos, vinda do banco de dados em, objetos do tipo SelectItens , onde você poderá passar para o componete f:selectItens que está dentro do seu SelectOneMenu. entendeu ?

E

DDark,

No exemplo que eu dei, no componente h:selectOneMenu estou usando uma variável do tipo String “valor”; que serve para iniciar o combo com um valor inicial e recuperar o valor do item selecionado.

No componente f:selectItems tem uma lista de objetos, que é a lista a ser apresentada.

ddark.emanu

voce pode fazer dessa maneira:

<f:selectItem itemValue=""   itemLabel="Selecione uma opção"/> 
<f:selectItems value="#{seuController.lista}"/>

é isso mesmo que você perguntou ?

E

Ddark,

eu não perguntei, eu mostrei uma solução para a pergunta inicial do Rafael.java !!!

ddark.emanu

Foi mal evandropg , acabei lendo o post errado .

sua solução está similiar a minha,a única diferença da mim que você cria uma variável String na minha o value é direito o atributo do objeto, por exemplo venda.setRevendedor

rapha.java
evandropg:
No arquivo .JSP:



Em meuBeans :

private String valor;
public String getValor()
{ return this.valor; }
public voi setValor(String valor)
{ this.valor = valor; }

// Monta a lista
private List meuSelect;
public List getLista1()
{
String sValor , sDescricao;
meuSelect.clear();

/// ---- coloque aqui seu acesso ao banco para buscar o sValor e sDescricao, necessários para montar o selectOneMenu

/// --- Para cada linha recuperada no banco, dê o comando
meuSelect.add( new SelectItem(sValor , sDescricao));

// no final, retorne a lista
return meuSelect;
}

//// --- se fosse criar na manualmente seria assim:
public List getLista1()
{
meuSelect.clear();

meuSelect.add( new SelectItem("AC", "Acre"));
meuSelect.add( new SelectItem("AM", "Amazonas"));
meuSelect.add( new SelectItem("BA", "Bahia"));

return meuSelect;
}


Então evandropg, estou com duvida na parte do select para passar para uma lista, muda alguma coisa?
eu fiz dessa forma, mas da erro !
[code]package br.com.garantech.mb;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import br.com.garantech.connection.Conectar;
import javax.faces.model.SelectItem;

public class ComboMB {

private Connection getcon;

public ComboMB() {
this.getcon = new Conectar().getConnection();
}

private String valor = "";

public String getValor() {
return valor;
}

public void setValor(String valor) {
this.valor = valor;
}

private List meuSelect;

public List getLista1() {
meuSelect.clear();
String sValor, sDescricao;
meuSelect.clear();
try {
PreparedStatement stmt = this.getcon
.prepareStatement("select nome from cliente");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
meuSelect.add(new SelectItem("nome"));//quero que pegue o campo e adicione o nome na lista
}

rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
return meuSelect;

}
}
[\quote]
Desculpa pedir ajuda de novo, mas tenho pouco tempo de experiencia com JAVA !
Obrigado desde já !

Criado 12 de julho de 2011
Ultima resposta 13 de jul. de 2011
Respostas 10
Participantes 4