forEach com select + Vector não funciona  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Adriana Cardoso
JavaChild

Membro desde: 20/11/2004 19:54:08
Mensagens: 143
Offline

Olá,

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>
<jsp:useBean id="proposta" scope="page" class="cadastro.Proposta"/>

<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...
[Email] [WWW]
fcoury
JavaChild
[Avatar]

Membro desde: 17/10/2006 16:24:36
Mensagens: 142
Localização: Campinas, SP - Brazil
Offline

Você está usando o objeto, e não um atributo dele...

Troque:



Por:



E veja se funciona...

Felipe Gonçalves Coury
--
Arquivos texto em java: http://jfilehelpers.com
Visite meu blog: http://blogs.felipecoury.com
[WWW] [MSN]
Adriana Cardoso
JavaChild

Membro desde: 20/11/2004 19:54:08
Mensagens: 143
Offline

Oi Felipe,

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.



[Email] [WWW]
Adriana Cardoso
JavaChild

Membro desde: 20/11/2004 19:54:08
Mensagens: 143
Offline


Olá por fvr alguem tem um exemplo ou um pequeno projeto que usa o jstl com select para enviar por email ....para mim assim tento fazer aqui ..
[Email] [WWW]
David
JavaEvangelist
[Avatar]

Membro desde: 18/03/2005 13:10:33
Mensagens: 450
Localização: Natal/RN
Offline

Adriana Cardoso wrote:Fiz desse jeito que vc falou troquei por ${z.getNome()} mas agora dá o seguinte erro :
O certo seria ${ z.nome }.

David Pereira
Engenheiro de Computação - UFRN
Mestre em Engenharia Elétrica
Doutorando em Engenharia Elétrica
[WWW]
Adriana Cardoso
JavaChild

Membro desde: 20/11/2004 19:54:08
Mensagens: 143
Offline


Oi David,

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.
[Email] [WWW]
Pedrosa
JWizard
[Avatar]

Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline

Vc precisa criar o ben e popular onde vc faz o while na sua classe



//NomeVO




Agora no seu jsp vc recebe o nome da lista via request e itera:


A sua camada view não precisa saber de que classe vem, apenas recebe uma lista, ou seja nem precisa dessa linha:



passe a lista no controller



Note que esse nome é a variavel que foi criada no bean, assim deve funcionar agora!

Adriana Cardoso
JavaChild

Membro desde: 20/11/2004 19:54:08
Mensagens: 143
Offline

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

  • 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;
    }

    }


  • 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 ?




    [Email] [WWW]
    Adriana Cardoso
    JavaChild

    Membro desde: 20/11/2004 19:54:08
    Mensagens: 143
    Offline


    Olá amigos,

    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.



    Mas agradeço a todos até mais......

    [Email] [WWW]
     
    Índice dos Fóruns » Desenvolvimento Web
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team