2010-06-25 6 views
4

Je travaille avec Spring MVC 2.5.Ayant plusieurs formes sur Spring MVC

Souvent, je n'utilise qu'une forme dans tous mes JSP. Maintenant, j'ai besoin d'ajouter un autre formulaire dans la même JSP.

Ma question est, Spring MVC supportera-t-il toujours la même méthode de cycle de vie, quelle que soit la forme que je soumets?

Je veux dire, la même liaison de données, la validation, la gestion des erreurs, le contrôleur de formulaire, etc.

<div> 
    <form:form method="post" commandName="station"> 

    </form> 
</div> 

<div> 
    <form:form method="post" commandName="fields"> 

    </form> 
</div> 
+0

Utilisez-vous des contrôleurs annotés ou '' SimpleFormController''? – skaffman

+0

Si certaines réponses répondent à vos besoins, marquez-les comme acceptés. Je vous remercie! –

+0

@skaffman: J'utilise l'extension old school de simpleformcontroller et non celle annotée. @Arthur: Bien sûr, je vais le marquer dès que je clarifierai certaines choses. Je vous remercie. =) –

Répondre

3

Les contrôleurs de style ancien que vous utilisez ne peut prendre en charge un objet de commande, et donc une seule forme, à la fois. @ La réponse d'Arthur montre que vous ne pouvez pas vraiment mettre les deux formulaires sur une seule page, car un contrôleur donné ne fournira qu'un seul objet de formulaire, vous n'obtiendrez jamais les deux actifs à la fois. Si vous voulez faire cela, vous devrez arrêter d'utiliser les anciens contrôleurs (obsolètes au printemps 2.5 et obsolètes au printemps 3), et utiliser des contrôleurs annotés, beaucoup plus flexibles . Vous pouvez mélanger vos formes à peu près aussi complexe que vous le souhaitez.

+4

Pouvez-vous donner un exemple sur la façon de faire cela et par exemple. avoir plusieurs formulaires de saisie pour créer des entités sur une page? – Czar

3

Spring SimpleFormController prend uniquement en charge un type d'objet Command. Donc, si vous voulez utiliser deux formes Spring distinctes dans la même JSP, vous devez créer deux SimpleFormController. Et à l'intérieur de votre JSP, procédez comme suit pour éviter une exception

<c:if test="${not empty station}"> 
    <div> 
     <form:form method="post" commandName="station"> 

     </form> 
    </div> 
</c:if> 

<c:if test="${not empty fields}"> 
    <div> 
     <form:form method="post" commandName="fields"> 

     </form> 
    </div> 
</c:if> 
+0

Hi Arthur, Juste curieux, pourquoi un test if sur les objets de commande est-il nécessaire? Merci. –

+0

@Mark Estrada Parce que Spring form Taglib ** évaluera la commande fournie par vous-même ** Si la commande ne peut pas être évaluée, Spring lèvera une exception (pas de nom de commande underblah, blah, blah ...). Il explique pourquoi vous devriez utiliser