Pessoal tenho uma classe chamada Proposta.java que lista o campo da minha tabela (MYSQL) chamada Nome que tem o método getListar1 que joga os dados da coluna do meu BD.
[/code]
public Vector getListar1(){
Vector x = new Vector();
try {
// Joga dados no vetor
PreparedStatement sql = conn.prepareStatement("select nome from clientes ");
ResultSet rs = sql.executeQuery();
while (rs.next()) {
x.addElement(new Proposta(rs.getString("nome")));
}
rs.close();
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return x;
}
}[code]
Na minha jsp está assim para listar estes nomes dentro de um Combobox usei o jstl para fazer isso. Acima da página já adicionei o jstl/fmt e o jstl/core e tbm os devidos jars.
<hr>
<select name=“proposta”>
<c:forEach var=“z” items="${proposta.listar1}">
<option> ${z} </option> // aqui não pega a coluna nome!!
</c:forEach>
</select>
<hr>
Só que quando visualizo a página no Combobox aparece isso:
<option> cadastro.Proposta@1b2d7df </option>
<option> cadastro.Proposta@7a9224 </option>
<option> cadastro.Proposta@110b640 </option>
A var ${z} não está pegando o valor . O que pode ser este erro sabe porque eu testei usando uma tabela com o mesmo projeto e funcionou direitinho ,será que o select no caso do Combobox não busca muitos valores, precisa colocar mais alguma linha de comando dentro desse
select ?
Um grande abraço, espero ajuda mas tenho certeza que conseguirei a turma do GUJ sempre foi muito prestativa comigo… :lol:
Fiz desse jeito que vc falou troquei por ${z.getNome()} mas agora dá o seguinte erro :
org.apache.jasper.JasperException: /proposta.jsp(28,17) The function getNome must be used with a prefix when a default namespace is not specified.
Teste desse jeito e continua aparecendo :
<option> cadastro.Proposta@13d9460 </option>
Insisto alguem tem por fvr um peqeno projeto usando select , nao é falta de procura estou ha bastante tempo garimpando na net mas nao achei nada para solucionar o caso.
Vc precisa criar o ben e popular onde vc faz o while na sua classe
//NomeVO
public class NomeVO {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
public List getNome() throws SQLException {
strSQL = "select * from tabela";
PreparedStatement stmt = this.connection.prepareStatement(strSQL);
ResultSet rs = stmt.executeQuery();
List list = new ArrayList();
while (rs.next()) {
NomeVO dados = new NomeVO();
dados.setNome(rs.getString("coluna"));
list.add(dados);
}
rs.close();
stmt.close();
return list;
}
Agora no seu jsp vc recebe o nome da lista via request e itera:
oi Pedrosa,
Entao eu havia criado sim a classe Bean entao ai eu fiz dessa forma acrescentei o comando que vc passou : Esta classe herda da Conexao com o BD
[list]public class Proposta extends Conexao{
private String nome;
public Proposta() {
conecta();
}
// ====== gets e sets===========
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
// Chama lista do bd para o ComboBox
public List getListar() throws SQLException {
String strSQL = "select * from clientes";
PreparedStatement stmt = this.conn.prepareStatement(strSQL);
ResultSet rs = stmt.executeQuery();
List list = (List) new ArrayList();
while (rs.next()) {
Proposta dados = new Proposta();
dados.setNome(rs.getString("nome"));
list.add(dados);
}
rs.close();
stmt.close();
return list;
}
}[/list]
Depois na jsp:
<jsp:useBean id=“proposta” scope=“request” class=“cadastro.Proposta”/>
<select name=“proposta”>
<c:forEach var=“listar” items="${listar}">
<option value="${listar.nome}">${listar.nome}</option>
</c:forEach>
</select>
A minha duvida é sobre esta instância do Bean como vc pode ver acima nesse caso fiz aqui direto na jsp e não na Controller.
Sobre o que vc falou request.setAtributte(“nomeLista”, new Proposta().getNomes());onde eu adiciono esta linha na propria classe Proposta ?
Então agradeço a ajuda de vcs , e encontrei a solução é o seguinte acabei fazendo a minha lista usando Vector mesmo como havia feito de principio.
Mas na instrução do select esqueci de colocar order by nome assim ele seleciona o item desejado da tabela Clientes - no caso Nomes.
Outra coisa no select na jsp usei da seguinte forma , instanciei o Bean na propria jsp acho mais fácil do que na Controller.