2009-10-06 3 views
0

Nous développons une application utilisant Spring MVC. Il y a une page qui affiche la liste des utilisateurs, une case à cocher à côté, et un bouton de soumission au bas de la page.étendue d'un contrôleur et d'un validateur

Un utilisateur connecté peut sélectionner ces cases à cocher et soumettre, actuellement un contrôleur vérifie si la liste d'utilisateurs sélectionnée est vide ou non et agit en conséquence. Devrions-nous simplement amener un validateur uniquement pour faire ce contrôle? ou alors est-ce bien de le faire dans le contrôleur lui-même? Y at-il un document qui dit ce qu'un contrôleur, un validateur devrait faire et ne devrait pas faire?

Répondre

1

Jusqu'à la sortie de Spring 3.0 - il n'y a pas de prise en charge intégrée pour la validation du modèle. Vous devrez gérer la validation de votre propre - comme ceci:

@RequestMapping 
public String post(@ModelAttribute MyModel myModel, BindingResult result){ 
    myValidator.validate(myModel, result); 
    if (result.hasErrors()) return "myView"; 
    ... 
} 

Vous pouvez faire ce que vous aimez, c'est votre code. Mais par convention, le contrôleur devrait simplement se préoccuper de diriger les choses - la validation devrait vraiment être dans un validateur séparé.

+0

Merci Daniel. Je pourrais voir dans votre code que vous appelez explicitement la méthode validate qui est applicable pour AbstractCommandController pas pour SimpleFormController. Pour SimpleFormController, nous pouvons simplement activer le validateur dans la déclaration du bean. – novice

+0

Oui, vous avez absolument raison; J'utilise des contrôleurs basés sur des annotations depuis si longtemps que j'ai oublié ceux qui étendent les classes de contrôleur de Spring. –