Passando valor do combobox para a servlet  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Olá a todos!
Tenho uma página jsp que tem um combobox, como eu faço para passar o valor selecionado do combobox para a servlet.
Quando dou um request.getParameter, ele está me retornando null para o atributo que recebe o valor do combobox.
O meu combobox não está pegando nada do banco, está apenas com o valor informado em cada option.

Ex:
<select name="teste" i="teste">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 2 </option>
</select>



Sei que nada sei!
[Email] [Yahoo!]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Estranho hein?

Posta teu código completo.



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Então vamos lá:

O código HTML:

A servlet:


O que acontece é que não estou conseguindo pegar no request.getParameter o valor passado pelo combobox.
O valor que está vindo é null.


Sei que nada sei!
[Email] [Yahoo!]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Não estou conseguindo passar os parâmetros do checkbox pela URL, alguém pode me ajudar?

Sei que nada sei!
[Email] [Yahoo!]
ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

Olá,

O problema é que você não está submetendo o form. O teu botão é do tipo "button", e você faz ele apenas direcionar para um outro link. Portanto nada do que você seleciona ou escreve no seu formulário está indo para o servidor.

A solução é mudar o botão para algo do tipo:



Se você ainda precisar passar o parâmetro "negocio" pro seu servlet como você estava fazendo na declaração do teu botão, é só você declarar um campo hidden dentro do seu form:



Pronto! Com isso você deve receber no servidor os dados do form (inclusive o campo "negocio").

Abraço

Carlos Tosin
Instrutor Oficial dos cursos de Java & Android
Softblue - Qualidade em Cursos On-Line
www.softblue.com.br
[WWW]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Olá ctosin o problema é que tenho 2 tipos de consultas a serem efetuadas( cada uma com um botão diferente para ser clicado) e se eu colocar um submit ele irá realizar apenas uma consulta. Eu quero passar o link que chamará a servlet e passar os parâmetros juntos, estes parâmetros são os valores dos combobox.

Desde já muito obrigado!

Sei que nada sei!
[Email] [Yahoo!]
ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

Pra resolver isso, o mais comum é você usar uma função JavaScript. Você pode fazer algo assim:



Daí os seus botões podem ser declarados assim:



Pra que isso funcione, mantenha o campo hidden no seu form com o nome "negocio".

Abraço

Carlos Tosin
Instrutor Oficial dos cursos de Java & Android
Softblue - Qualidade em Cursos On-Line
www.softblue.com.br
[WWW]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Caro ctosin esta fução eu irei fazer com que haja um submit quando eu clicar no botão, até ai tudo bem, só que o que estou querendo é passar parãmetros. Eu quero passar o link que chamará a servlet e passar os parâmetros juntos, estes parâmetros são os valores dos combobox.

Desde já muito obrigado.

Sei que nada sei!
[Email] [Yahoo!]
ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

ivan cox wrote:
Eu quero passar o link que chamará a servlet e passar os parâmetros juntos, estes parâmetros são os valores dos combobox.


Mas é exatamente isso que o submit faz: ele manda você para link que está descrito no atributo "action" da form e passa junto os valores dos componentes do formulário.

Por exemplo, se você tem um combo box chamado "bloco" onde você seleciona o valor "1" e um combo box chamado "box" onde você seleciona o valor "2", no momento em que você fizer o submit, a URL será:



Pronto, você tem acesso aos valores dos campos do formulário do servidor. Você verá a URL desta forma apenas se você fizer o post pelo método GET. No código que você mostrou, você está usando POST. Portanto você não verá os dados na URL, mas eles chegarão ao servidor sim, pois eles vão internamente no cabeçalho HTTP.

Se os termos GET e POST não são claros pra você, recomendo que você tente entender bem como eles funcionam e qual a diferença entre eles, porque eles são a base de qualquer transferência de dados entre o cliente (browser) e o servidor.

Abraço

Carlos Tosin
Instrutor Oficial dos cursos de Java & Android
Softblue - Qualidade em Cursos On-Line
www.softblue.com.br
[WWW]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Olá ctosin acho que já estou te enchendo a paciência né?
Realmente este código que vc me passou está correto:

só que tem um problema pois eu tenho 8 opções de blocos no combobox e o usuário irá escolher um, não tem como eu passar o bloco específico por parâmetro. Eu tenho que passar a variável bloco só que quando eu pego ela na servlet ela vem como string bloco e não vem o valor do bloco.
Aproveitando o post desejo um feliz natal e um ano novo cheio de paz, amor, prosperidade e saúde!

Sei que nada sei!
[Email] [Yahoo!]
ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

Tem alguma coisa muito estranha acontecendo. Na teoria é assim que a coisa deveria funcionar. Me manda um exemplo simples do que você está tentando fazer e não consegue. Tipo um código HTML que você use pra submeter a opção selecionado de um combo para um servlet e não esteja funcionando. Manda também o código do servlet.

E obrigado, Boas Festas pra você também!
Abraço

Carlos Tosin
Instrutor Oficial dos cursos de Java & Android
Softblue - Qualidade em Cursos On-Line
www.softblue.com.br
[WWW]
ivan cox
Thread.start()
[Avatar]

Membro desde: 21/04/2009 08:04:56
Mensagens: 32
Localização: Brasília
Offline

Olá ctosin , obrigado por tudo!
Segue parte do código html:



Segue a servlet:



Ja tentei passar utilizando a tag param, usando o nome do atributo (bloco, box), se eu passar um valor específico ele aceita, agora pegando o valor da combobox ele não aceita, já tentei fazer com sessão só que fiquei perdido na hora de pegar no servlet os dados dos formulário passados pela sessão, pois os valores dos combobox não estão armazenados no banco e nem em beans e sim são valores que estão na página jsp. Pensei em criar uma tabela no banco com os blocos e os boxes, assim eu poderia usar um array e jogar em um objeto e puxá-lo pela sessão, só que estou tentando pegar apenas da jsp.

Sei que nada sei!
[Email] [Yahoo!]
ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

Mas esse código que você me mandou não passa os parâmetros mesmo. A passagem de parâmetros para o servidor é feita através de um submit no teu formulário, e em nenhum momento você faz um submit. É por isso que os dados não estão indo. Achei que depois da dica que eu te dei anteriormente, de que você precisa ter um submit na sua página, você tinha corrigido seu código já.

Enquanto o seu botão chamar apenas o "location.href" não vai funcionar. O location.href é usado para você redirecionar para uma outra URL, e isso não tem nada a ver com submeter dados fornecidos por um usuário em um formulário: redirecionar é uma coisa, submeter os dados é outra.

Pelo código que você me mandou, vejo que você precisa passar 3 informações para o servidor:

  • Valor escolhido pelo usuário na combo "bloco"

  • Valor escolhido pelo usuário na combo "box"

  • Parâmetro extra de controle chamado "negocio" com o valor "box.BoxConsultar"


  • Troque o seu botão para isso:



    Então os valores escolhidos pelo usuário nas combos "bloco" e "box" serão submetidos e você poderá pegar os seus valores via request.getParameter() no servlet (toda vez que ocorre um submit, todos os valores dos componentes do formulário são enviados para o servidor).

    Quanto ao parâmetro "negocio", como já comentei, basta que você crie um campo hidden pra ele no teu formulário, que na hora da submissão ele irá junto:



    Recomendo que você vá atrás de algum material que ensine submissão de dados de formulários em HTML. Esse problema que você está tendo é algo realmente muito básico, que você vai usar toda vez que você tiver um formulário. Por esta razão isto deve estar muito claro pra você. E isto não tem nada a ver com JSP: é apenas HTML.

    Abraço

    This message was edited 1 time. Last update was at 25/12/2009 22:30:06


    Carlos Tosin
    Instrutor Oficial dos cursos de Java & Android
    Softblue - Qualidade em Cursos On-Line
    www.softblue.com.br
    [WWW]
    ivan cox
    Thread.start()
    [Avatar]

    Membro desde: 21/04/2009 08:04:56
    Mensagens: 32
    Localização: Brasília
    Offline

    Olá ctosin é que pensava eu que pelo location.href eu iria conseguir passar algum parâmetro do html, tipo quando vc usa a tag param ou quando você usa &.
    Toda esta discursão gerada apenas para entender que o location.href não passa parâmetros.
    Muito obrigado por sua atenção e por não ter desistido do tópico.
    Que 2010 seja um ano próspero em todas as suas áreas!


    Sei que nada sei!
    [Email] [Yahoo!]
     
    Índice dos Fóruns » Desenvolvimento Web
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team