[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Formulário com passos  XML
Forum Index -> Comentários Gerais
Author Message
andredelorme



Joined: 20/07/2005 11:41:46
Messages: 51
Offline

Tenho a seguinte necessidade: criar um formulário com vários passos, por exemplo, para um cadastro onde temos dados pessoais, dados relativos a endereço e ainda um formulário de pesquisa de opinião. Como podemos implementar isso no com o Mentawai? O que é preciso alterar nele?

Alguns pontes devem ser levados em consideração:

- Como os valores serão persistidos a cada passo? Não acho uma boa opção colocarmos os dados na session, uma vez que o formulário completo é longo e a sessão pode expirar antes do final do preenchimento. Teríamos que a cada passo acumularmos mais campos hidden? E mais como fazer isso dinamicamente?

- Outro ponto seria a necessidade de no segundo passo (endereço) o usuário possuir mais de um (N endereços), como poderíamos proporcionar isso? Acho que o formulário deveria ter dois botões de submit, um para “Próximo passo” e outro como “Mais um endereço”.
Também questiono como poderíamos ter funcionalidade semelhante se todos o campos fossem solicitados em uma única tela, mas ainda assim quiséssemos disponibilizar um botão para adicionar mais endereços (e também remover endereço)?

- Por fim, se possível, também seria interessante se a navegação através dos passos do formulário não fosse obrigatoriamente linear, onde o usuário pudesse no último passo voltar para a primeira tela e alterar valores.

Não conheço muito de Struts, mas parece que ele tem uma funcionalidade que permite criarmos um Form com todos os campos mesmo que estes não sejam apresentados todos em uma única tela (passo).

Agradeço qualquer sugestão.


André Delorme
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Fala André !

andredelorme wrote:

- Como os valores serão persistidos a cada passo? Não acho uma boa opção colocarmos os dados na session, uma vez que o formulário completo é longo e a sessão pode expirar antes do final do preenchimento. Teríamos que a cada passo acumularmos mais campos hidden? E mais como fazer isso dinamicamente?
 


A melhor maneira de fazer isso é via Session, com certeza. Ficar gerando inputs é inseguro e esquisito. É só colocar um tempo razoável para a session que dê tempo de ele preencher o formulário mais longo de todas as etapas. Não tenho certeza, mas deve ter um jeito maroto via JavaScript de evitar que a session expire fazendo requisições assíncronas para o servidor. Mas isso fica desnecessário com uma session razoável.

Tamanho do objeto na session não é problema. É só lembrar de removê-lo quando ele não mais for necessário, isto é, o formulário todo foi preenchido com sucesso.

Andre wrote:

- Outro ponto seria a necessidade de no segundo passo (endereço) o usuário possuir mais de um (N endereços), como poderíamos proporcionar isso? Acho que o formulário deveria ter dois botões de submit, um para “Próximo passo” e outro como “Mais um endereço”.
Também questiono como poderíamos ter funcionalidade semelhante se todos o campos fossem solicitados em uma única tela, mas ainda assim quiséssemos disponibilizar um botão para adicionar mais endereços (e também remover endereço)?
 


Acho que isso é possível com uma simples resubmissão. Usando as tags do Mentawai (mtw:input, mtw:select, etc.) os campos já virão preenchidos e uma resubmissão fica bem simples e prática.

Só teremos que realmente criar uma tag (custom tag) esperta para gerar os campos. Acho que deve ser isso que te assustou, mas com o Mentawai é muito fácil fazer uma custom tag.

Andre wrote:

- Por fim, se possível, também seria interessante se a navegação através dos passos do formulário não fosse obrigatoriamente linear, onde o usuário pudesse no último passo voltar para a primeira tela e alterar valores.
 


Estando tudo na session isso não tem mistério...

Acho que a questão menos simples é fazer a custom tag para mostrar N endereços. Dê uma olhada em como as tags de HTML do mentawai são feitas para entender como é fácil isso...

Qualquer dúvida poste aqui...



Sergio Oliveira

boaglio


[Avatar]

Joined: 28/09/2005 11:05:16
Messages: 299
Location: Sao Paulo - Brazil
Offline


Oi André,

andredelorme wrote:

- Como os valores serão persistidos a cada passo? Não acho uma boa opção colocarmos os dados na session, uma vez que o formulário completo é longo e a sessão pode expirar antes do final do preenchimento. Teríamos que a cada passo acumularmos mais campos hidden? E mais como fazer isso dinamicamente?
 


Concordo com vc, mas temos um problema.
Imagina um form com os campos ID,NOME.CARGO e SALARIO.
Como o mentawai vai saber que numa página JSP estão todos os campos do seu formulário?
No Struts existe o FormBean que pelo XML (argh!) ou por Classe vc
define o seu form e usa depois... aí sim ele tem como saber de
o que está faltando...
Mas essa funcionalidade eu não gostaria de ver no mentawai... ter que
declarar formbean toda hora é um porre!

O jeito mais fácil de resolver isso é manter na Session, como o Sergião
falou, mas dá pra fazer isso manualmente sem problemas... um jeito
legal de fazer isso é manter tudo na mesma página JSP e conforme
o passo de cadastro ir exibindo algumas partes.

andredelorme wrote:

- Outro ponto seria a necessidade de no segundo passo (endereço) o usuário possuir mais de um (N endereços), como poderíamos proporcionar isso? Acho que o formulário deveria ter dois botões de submit, um para “Próximo passo” e outro como “Mais um endereço”.
Também questiono como poderíamos ter funcionalidade semelhante se todos o campos fossem solicitados em uma única tela, mas ainda assim quiséssemos disponibilizar um botão para adicionar mais endereços (e também remover endereço)?
 

Com um iframe chamando outra action daria pra fazer isso.

andredelorme wrote:

- Por fim, se possível, também seria interessante se a navegação através dos passos do formulário não fosse obrigatoriamente linear, onde o usuário pudesse no último passo voltar para a primeira tela e alterar valores.
 

Se isso for necessário tem um jeito legal e elegante de se fazer isso:
com CSS você ir exibindo e escondendo os campos do formulário.
Visualmente eles são separados por abas, mas no HTML eles estão
todos no mesmo lugar.
Acho que vi um exemplo assim pra fazer um Boletim de Ocorrência no site da polícia quando roubaram o meu celular.

andredelorme wrote:

Não conheço muito de Struts, mas parece que ele tem uma funcionalidade que permite criarmos um Form com todos os campos mesmo que estes não sejam apresentados todos em uma única tela (passo).
 


Como eu comentei, ele usa o formbean pra isso, e vai mantendo os valores nas páginas.

http://www.boaglio.com
[WWW]
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team