Campos de formulários com mesmo nome

11 respostas
C

Bom dia,

Numa aplicação eu tenho uma tela chamada consultaMaterial que tem um Form (Struts) e um Action. Do action dessa página eu posso ir para uma página cadastraMaterial que tem seu próprio Form.

Só que ambas as páginas tem os mesmos campos nos dois Forms (uma para pesquisa e uma para inserção e alteração). O que acontece é que quando eu vou de uma página para outra os campos preenchidos no formulário HTML de uma são passados para a outra. Então, se eu clico no botão “Novo Material” na página de consulta e tinha alguma coisa no campo “nome”, por exemplo, o formulário da página de cadastro vem com o nome preenchido.

A única solução que eu achei até agora é colocar nomes diferentes nos formulários. É isso mesmo ou tem uma solução menos trabalhosa?

Um abraço.

11 Respostas

skill_ufmt

crisadias:
Bom dia,

A única solução que eu achei até agora é colocar nomes diferentes nos formulários. É isso mesmo ou tem uma solução menos trabalhosa?

Um abraço.

Acredito que isso só ocorre pois seus dados estão na sessão, certo?
Se você já não precisa mais dos dados do primeiro Form, ou já colocou eles em outro lugar, você pode simplesmente anular a seção, ou o campo que você queira setando NULL, ou coisas do tipo.

Fora isso, use request, ou troque os nomes…

C

Kivanio,
o Form da página está com o scope=request. Só que ainda assim a informação chega na próxima página. A ordem de execução é assim:

consultaMaterial.jsp  (que tem um campo nome para pesquisa)

consultaMaterialAction.do (remete para o action)

ConsultaMaterialAction.class (retorna o forward para cadastroMaterialAction.do)

cadastroMaterialAction.do (que faz alguma verificação e preenche selects)

CadastroMaterialAction.class (que faz alguma verificação e preenche selects)

cadastroMaterial.jsp (que mostra o formulário e no nome aparece o que estava na página jsp anterior)

Como eu faço para apagar a informação que está no request?

Obrigado pela ajuda.

Mauricio_Linhares

Chame reset na mão (no tal form) quando for carregar a outra página.

C

Maurício,
já tentei resetar o Form, mas o problema, acredito, é o request que está sendo enviado. Se eu troco o method por get aparece na barra de endereços:

http://localhost:7001/testes/consultaUsuarioAction.do?
pagina=consultaUsuario&
chave=2&
matricula=2&
nome=3&
opcao=Novo

E essas informações são interceptadas pelo Form da página cadastroUsuario.jsp que é aberta ao fim do processamento dessa chamada.

jgbt

se vc usar os mesmos nomes, isso vai acontecer.

vc pode fazer uma gambiarra com java script e limpar os campos na mão.
não é a melhor solução, mas funciona.

[]'s

Mauricio_Linhares

Mas existe um action que recebe essa requisição ou ela vai direto pra um .jsp? Você implementou o método reset lá no seu ActionForm?

C

Existe um action que recebe a requisição e chama o action da outra página. Eu implementei o reset para limpar as variáveis do form. Isso bastaria?

Mauricio_Linhares

Deveria bastar, porque quando ele fosse passado de um lado pro outro o método reset deveria ser chamado antes dele ser reutilizado.

Comportamento estranho esse… :shock:

C

vou tentar fazer de novo e ver se consigo limpar.

Obrigado.

C

Olha outra coisa curiosa:
Agora eu coloquei um botão de voltar em cada uma das duas páginas. Quando eu clico em voltar na segunda página ele volta, passa direto pela primeira e vai para o índice da aplicação. Como se eu tivesse clicado no voltar das duas páginas.
O parâmetro do formulário é passado adiante. Eu posso até ler ele na página de índice se quiser.

C

há… mancada minha… e das feias…
Tava tratando o reset no formulário da página de consulta e não na página de cadastro que é o que eu queria limpar…
E lá se foram horas de bons serviços prestados…

valeu pela ajuda…

Criado 23 de maio de 2005
Ultima resposta 23 de mai. de 2005
Respostas 11
Participantes 4