Formularios com campos indeterminados (numero de campos variados), como fazer o request?

3 respostas
W

Ola pessoal, alguem poderia me indicar o caminho das pedras pra seguinte situação…
Imagina que voce tem la um banco tranquilo.
Dai eu listo os itens com suas opções na pagina e na frente o botao pra alterar ele ± assim

while(result.next()){
%>
<form>
<campo 1><campo 2><campo 3><submit>
</form>
<%
}

Blezeza, ai a pagina que realiza a operação trata apenas um formulario independete então é facil, ir trocando um por um…
até ai tranquilo, mas tem casos que eu tenho uns 400 itens, quase todos os itens são montados em campo RADIO, então seria mais facil mudar todos eles e enviar de uma vez só, mas como fazer isso uma vez que a quantidade de campos vai variar de item pra item? O formulario é sempre o mesmo.

3 Respostas

W

eu expliquei mal, ou não é possivel fazer isso?

rafaelk

É possível sim, mas explique melhor, vc usa algum framework ou só jsp, servlet ??

W

infelizmente eu não conheço as framework, faço no “braço” mesmo, assim:

HTML

<form>
<inpyt type="text" value="" name="campo1" />
<input type="submit" />
</form>

JSP

String x = request.getParameter("campo1");
//Faz o que tem que fazer

Quando eu uso os itens do banco fica o mesmo formato do HTML acima, so que em varios forms, ai quando da o submit ele altera somente o form que o submit pertence, até ai ta blz, alterar uns 10 itens é facil, mas quando tenho muitos itens, ficaria muito mais facil, marcar todos, e depois dar um alterar todos ou algo assim.

Tinha pensado em chamar os campos de “nomeCampoX”, e trocar o X por um contador, colocar X na session, e fazer o FOR na pagina de tratamento em JSP com base no X da session, mas me pareceu meio uma gambiarra, queria saber se ja não existe algum meio pra fazer isso…

Seria simples fazer um formulario geral com a quantidade de campos determinada, o form sera sempre o mesmo o que muda vai ser so a quantidade de repetição. Mas nesse caso a quantidade não é fixa :frowning:

Mais ou menos isso que pensei:
HTML

<form>
    <%
        int cont = 0;
        while(result.next(){
            %>
            &lt;input type="text" value="" name="campo&lt;%= ++cont %&gt;"/&gt;<br />
    &lt;%
            }
        session.setAttribute("formCont", cont);
    %&gt;
    &lt;input type="submit" value="ALTERAR TODOS" /&gt;
&lt;/form&gt;

JSP

int contador = Integer.parseInt(session.getAttribute("formCont").toString());
            HashMap dados = new HashMap(0, 1);
            for (int cont = 1; cont &lt;=contador; cont++) {
                dados.put("campo" + cont, request.getParameter("campo" + cont));
            }

Porem ai eu perco a opção de alterar apenas um se for o caso.

Criado 19 de janeiro de 2010
Ultima resposta 20 de jan. de 2010
Respostas 3
Participantes 2