Submissão dupla em um formulário....?

5 respostas
P

Pessoal , to com um “pobrema”…

seguinte…
eu tenho uma pagina(pag1.jsp) de consulta de usuarios por exemplo…

nesta pagin quando ela e carregada , aparece somente um combo…para ele escolher no caso…o campo da tabela que ele quer consultar…(nome , idade, sexo… etc…).
De acordo com a opção feita pelo usuário no combo…eu iriei re-submeter o formulario passando novos parametros para a própria página para que um componente de entrada de dados(SELECT ou INPUT), seja adiconado a pagina para o usuário escolher da melhor forma o valor para consultar no banco…

exemplo…escolheu no combo 1 da pagina teste.jsp a opção(campo do bd) “nome”…a pagina é submetida novamente e um campo texto para o usuário digitar a informação a ser consultada irá ser criado…

se o usuário no combo 1 escolher “sexo” , por exemplo…a pagina é submetida e um novo combo (2) e criado logo abaixo para o usuário escolher o sexo através do combo…pois a valores pré-definos para os mesmos…faciliando assim a consulta dos usuários…

O problema é que …

no caso…eu tenho um evento onchage do select…que através de javascript eu re-submeto o formulário …(uma tag <FORM> , sem action…) para ele submeter para a propria página com javascript(myForm.submit(); )

o problema é que depois do usuário ter escolhido a opção no combo 1 para mostrar o compnente mais adequeado para digitar a informação a ser consultada…eu precisaria que um botão submit submetesse esse formulário para um servlet , para mim realizar uma consulta e entregar o resultado a uma outra página jsp…

o problema e que eu nao estou vendo como fazer isso…pois eu nao tenho meu action preenchido…para redirecionar para meu servlet…
e se eu preenchesse meu action para redirecionar para meu servlet…eu nao poderia re-submeter a pagin acom estou fazendo apra modelar a pagin aantes de realmente enviar para o servlet de consulta…

como ue poderia fazer isso???

eu tbm nao posso usar dois forms…pois nao daria certo…porque eu teria um form…para resubmeter a pagina e mudar de acordo com a escolha do usuário…até ai tudo bem…mas…

com o outro eu nao poderia passar como parametro para o servlet…os campos contidos no outros form…

uffaaa cansei… :lol: :oops:

espro a ajuda de vcs…

Obrigado.

[] à todos!!!

Felipe.

5 Respostas

Rafael_Steil

Uma maneira bem simples e mediocre eh definir um hidden com a accao que voce deseja… entao, no servlet/jsp, voce faz um ifzao com base na acao… por exemplo:

...
&lt;input type='hidden' name='action' value='reload'&gt;
....
&lt;script language='javascript'&gt;
function recarregaCombo&#40;&#41; 
&#123;
    document.myForm.submit&#40;&#41;;
&#125;

// Submit do form
function doSubmit&#40;&#41;
&#123;
    document.myForm.action.value = "processa";
    document.myForm.submit&#40;&#41;;
&#125;
&lt;/script&gt;
...

&lt;!-- Botal de Submit geral do form --&gt;
&lt;input type='button' value='Enviar' onClick='doSubmit&#40;&#41;'&gt;

entao, no teu codigo java, voce verifica o valor do campo “action”, e com base nisso decide o que fazer.
Uma outra forma, mais simples, seria simplesmente mudar o valor do atributo “action” da tag <form>, mas nao lembro de cabeca como fazer isso.

Rafael

danieldestro

Uma maneira mais trivial e prática ainda:

&lt;form name=&quot;seuForm&quot; action=&quot;/SeuServlet&quot;&gt;
  &lt;select name=&quot;seuCombo&quot; onChange=&quot;reloadForm&#40;this.form&#41;;&quot;&gt; &lt;/select&gt;
  &lt;br&gt;
  &lt;input type=&quot;submit&quot; name=&quot;ok&quot; value=&quot;ok&quot;&gt;
&lt;/form&gt;

&lt;script language=&quot;javascript&quot;&gt;
function reloadForm&#40; theForm &#41; &#123;
  theForm.action = &quot;mesmaPagina.jsp&quot;;
  theForm.submit&#40;&#41;;
&#125;
&lt;/script&gt;
P

Rafael…por favor…eu nao entendi muito bem a sua idéia de ifzão…

eu entendi…que quando eu apertar o botão de submit geral…o valor do campo hidden irá mudar…e passar a ser “processa”…mas para que isso cara??

Valeu!

danieldestro

Esse IF sugerido pelo Rafael, seria dentro do seu Servlet, algo como:

if&#40; req.getParameter&#40;&quot;action&quot;&#41;.equals&#40;&quot;processa&quot;&#41; &#41; &#123; // processa dados &#125; else if&#40;req.getParameter&#40;&quot;action&quot;&#41;.equals&#40;&quot;reload&quot;&#41; &#41; &#123; //reload da pagina &#125;

isso no caso de vc usar o mesmo servlet para dar o “reload” da pagina e para processar os dados.

abraços

P

daniel valeu pela dica cara…deu certinho… :lol:

valeu rafael…pela sua ajuda tbm…!!! :lol:

Criado 20 de agosto de 2003
Ultima resposta 21 de ago. de 2003
Respostas 5
Participantes 3