2011-01-08 6 views
0

J'ai des objets Question personnalisés que je rends dans des éléments de formulaire HTML. Je veux être capable de créer dynamiquement ces objets et de générer un formulaire HTML dynamique à partir d'eux. L'objet question a une propriété String pour contenir le résultat du formulaire. Comment puis-je faire en sorte que cela fonctionne au printemps?Formulaire dynamique au printemps 3

La façon dont je l'ai fonctionne (ce qui ne semble pas idéal), c'est que j'ai un bean pour sauvegarder le formulaire personnalisé. Ce bean a deux propriétés: une liste pour contenir les questions à afficher et une liste pour contenir les résultats. Le JSP a une balise qui lui indique d'utiliser le bean comme attribut de modèle. Ensuite, j'ai une balise JSP personnalisée qui prend la liste et les rend dans les éléments de formulaire. Les éléments reçoivent les identifiants de réponse [n] et Spring placera les résultats du formulaire dans la propriété List du bean backing.

Est-ce que quelqu'un sait comment je peux faire mieux?

+0

Cela semble similaire à ma vieille question http://stackoverflow.com/questions/890250/better-way-for-dynamic-forms-with-spring –

+1

Cela fonctionne. Pourquoi n'avez-vous pas sélectionné une réponse? –

+0

[Ici] [1] est la solution que j'ai implémentée. [1]: http://stackoverflow.com/questions/9671640/spring-3-mvc-managing-a-one-to-many-relation-within-a-dynamic-form-using- une – sp00m

Répondre

1

Mon problème était un manque d'expérience.

J'ai fini avec ce (très simplifié pour l'explication):

Mon haricot a les champs suivants: String questiontype, String questionText, réponse à cordes. Ma liste de haricots est Liste des questions.

Lorsque je génère le code HTML à partir de la liste des beans, j'ai juste besoin de faire correspondre l'identifiant/nom de chaque élément du formulaire avec le nom de la liste et la position du bean dans la liste.

Donc, si ma liste de questions ressemble à ceci:

[0] {questionType="TEXT", questionText="What is your name?", answerText=null} 
[1] {questionType="TEXT", questionText="What is your quest?", answerText=null} 
[2] {questionType="TEXT", questionText="What is your favorite color?", answerText=null} 

Alors je besoin de générer la boucle HTML quand je suit dans la liste:

<div class="question"> 
    <p class="questionText">What is your name?</p> 
    <input type="text" id="questions[0].answerText" name="questions[0].answerText" /> 
</div> 
<div class="question"> 
    <p class="questionText">What is your quest?</p> 
    <input type="text" id="questions[1].answerText" name="questions[1].answerText" /> 
</div> 
<div class="question"> 
    <p class="questionText">What is your favorite color?</p> 
    <input type="text" id="questions[2].answerText" name="questions[2].answerText" /> 
</div> 

Lorsque le formulaire est soumis, Spring trouvera ces beans et appellera setAnswerText (String value) avec les données du formulaire.

J'espère que cela aidera quelqu'un d'autre à trébucher au début de leur voyage Spring MVC.

Questions connexes