[Struts] Formulário com número de campos variáveis

6 respostas
A

Bom dia!

Estou com um problema aqui na aplicação web que estou desenvolvendo e espero que vocês possam me ajudar:
Tenho uma tabela, onde cada linha representa um form que envia os dados dessa linha para uma action, que valida os dados e insere esses dados em uma tabela no meu banco de dados. O número de linhas nessa tabela é variável, que eu monto iterando sobre uma array via taglibs.
Até ai ok, quando o usuário pressionar um botão, ele enviará para a action os dados da linha correspondente e haverá a inserção.
O problema é que será necessário um outro button que enviei os dados de todas as linhas de apenas 1 vez.
Já pensei em algumas soluções, que após um tempo de pesquisa, acabaram se tornando inviáveis:

-Função em Javascript que dá submit em todos os forms: não funciona pois após o primeiro submit ele dá reload na página, e o segundo submit já não acontece.

-Formulário com campos hidden: O que eu iria fazer seria iterar o número de linhas, criar campos hidden em um formulário com os valores de cada linha, e enviar para um outro action que cuidaria de todas as linhas ao mesmo tempo. Porém, para passar os campos do formulário para o action, eu deveria criar um actionForm ou um DynaActionForm com o número de campos dinâmico, coisa que eu acho que não é possível fazer.

-Fazer os posts dos formulários por AJAX: Tenho algum conhecimento em desenvolvimento AJAX, e talvez seja possível fazer o post de cada formulário via AJAX. Porém, não consegui achar material que pudesse me guiar nesse processo.

Então, caros foristas, algum de vocês já enfrentou essa situação? Alguém tem alguma outra idéia que possa me auxiliar nessa tarefa?

Por fim, caso não tenha ficado claro no corpo da mensagem, estou utilizando Struts 1.2.7, rodando em servidor Tomcat 5.5 e desenvolvendo no NetBeans 5.5.

Obrigado![/list][/list]

6 Respostas

P

opa, vamos tentar pensar em alguma coisa, isso se eu entendi seu problema direito…

solução 1 - essa eh tosca, hehehe…o número de linhas eh variável, mas existe um máximo??? vc ja deve ter entendido o q eu to pensando neh…declarar um form com o número máximo, e vamo q vamo…

solução 2 - uma vez tentei fazer mas fiquei sem paciencia e fiz a solução 1, hehehehe…vc cria uma classe q representa seu form, nessa classe tera um ArrayList, com objetos q representam essas linhas de quantidade dinamica…na declaração do se form no struts-config, ao invez de String vc poe ArrayList…e na JSP vc vai ter q iterar em cima disso…de cabeça assim talvez funcione, mas com certeza vc vai encontrar barreiras, hehehehe

bom…tenta aih…e vai postando os problemas, hehehehe

A

pedrobusko,

Sobre a solução 1, não é viável pois o número pode ser grande. Muito grande.

Sobre a solução 2, vamos ver se estou entendendo certo (lembrando que estou usando Struts): passar ArrayList’s para o actionForm?
Eu sinceramente não sei se é possível, até vou dar uma pesquisada denovo, mas acho que não dá pra fazer. Até pensei em passar pelo form um Array javascript, mas acho que isso realmente não é possível.
Mas estava pensando em fazer alguma coisa dessa linha mesmo… só não sei exatamente como isso seria possível!

Obrigado pela ajuda… vou pesquisar e estudar mais um pouco sobre esse assunto e qualquer novidade volto a postar, pois pode ser que depois alguém tenha a mesma dúvida que eu.

Ah, estarei monitorando esse tópico também, pois sempre podem surgir novas idéias das mais diversas pessoas!

[]'s!

P

a ideia era mandar um arraylist no actionform mesmo…nao sei exatamente como vc faria para montar a JSP, maaaass…ja eh outra hisotira, hehehehehe

na pior, mas pior mesmo, vc faz tudo via javascript, separado por || sei lah…depois se vira pra separar a string, hehehehehehehe

A

Pessoal,

Decidi usar o método do AJAX, enviando os formulários por AJAX a minha Action, e retornando um XML com as mensagens de confirmação do submit.

Fazendo 1 submit via ajax por vez, ele funciona perfeitamente.
Porém, quando faço as requisições em loop, ele tem um comportamento estranho, desde travar o browser (me parece que um loop infinito) ou mandando somente a primeira e as 3 ultimas requisições (no caso, estou testando com 11 loops).

Alguém tem idéia de como contornar o problema? Estou fazendo o loop pelo número de forms, pegando os dados do form da vez, e fazendo a chamada da função que eu uso quando envio 1 a 1.

Não sei se é problema no server side, mas creio que não. Talvez no código do sistema em javascript?

Qualquer ajuda é bem vinda!

Abraços!

P

vc esta controlando a fila de requisições AJAX?

A

Não… :smiley:
Pode me indicar alguma coisa para ler sobre isso?

É a minha primeira experiência com ajax :)!

Abraços!

Criado 10 de janeiro de 2007
Ultima resposta 16 de jan. de 2007
Respostas 6
Participantes 2