Nouveau sur Spring ici, et après avoir lu les documents de référence, le flux de travail pour valider un formulaire Web simple ne s'affiche pas chez moi. Quelqu'un pourrait-il me donner un aperçu de la façon dont nous procédons à la validation des formulaires dans Spring 3.0.3 (j'utilise un mélange d'annotations et de config xml dans une application web que je migre maintenant). À partir du contrôleur, que se passe-t-il? Par exemple: jusqu'à présent je pense avoir compris que je devrais "lier" les données du formulaire à un objet de ma création (par exemple MyPerson par exemple), puis créer un objet Validation qui accepte MyPerson et utilise ValidationUtils pour effectuer la validation . Mais tout cela est très flou dans ma tête (en particulier le concept de «reliure») et un examen étape par étape du flux de travail de quelqu'un qui a déjà vécu cela m'aiderait à être sûr que je ne manque pas ou que je ne me trompe pas. interpréter toutes les étapes.Essayer de comprendre le flux de travail pour la validation de formulaire de base à l'aide de Spring
Q
Essayer de comprendre le flux de travail pour la validation de formulaire de base à l'aide de Spring
1
A
Répondre
2
La méthode que vous mentionnez pour valider les formulaires est l'une des quelques options dont vous disposez.
En plus de la méthode que vous avez suggérée, vous pouvez également rechercher des annotations JSR-303 avec une implémentation appropriée (par exemple, Hibernate Validator). Il y a beaucoup d'exemples de la façon d'accomplir cela.
Pour la méthode de validation de printemps vos étapes de base sont les suivants:
- Créer une classe pour agir comme un objet de liaison, passer une instance de ce à la vue dans votre contrôleur
- Bind l'objet aux champs à votre avis en utilisant le formulaire taglib
- dans la méthode du contrôleur qui gère la soumission du formulaire, utilisez l'annotation
@ModelAttribute
pour lier les données de formulaire à votre objet de liaison - utilisez votre objet validateur personnalisé (probablement
@Autowired
à votre contrôleur) pour effectuer la validation
Heres un exemple simple commande:
@Controller
public class PersonController {
@Autowired
private PersonValidator personValidator;
@RequestMapping(value="person/form", method = RequestMethod.GET)
public ModelAndView form() {
// Instance of binding object
Person person = new Person();
// Create ModelAndView which displays personForm view
ModelAndView mav = new ModelAndView("person/form");
// Put our binding object in the model
mav.getModel().put("person", person);
return mav;
}
@RequestMapping(value="person/form", method = RequestMethod.POST)
public String save(@ModelAttribute Person person, BindingResult errors, Model model) {
// Call our custom validator and put errors into BindingResult
personValidator.validate(person, errors);
// If we have validation errors
if (errors.hasErrors()) {
// Show form with errors
return "person/form";
}
// Otherwise show some success page
return "person/success";
}
}
Je suppose que quelque chose qui me confonds est où "personne @ModelAttribute personne" est provenir de? J'utilise la vélocité, donc je ne peux pas utiliser le taglib JSP (si c'est le cas). Devrais-je simplement utiliser @RequestParam ("firstname") ... @RequestParam ("lastname") ... en tant que tel et construire un objet Person dans mon contrôleur? Puis, en suivant le reste des étapes indiquées? Même question pour les erreurs BindingResult –
Eh bien, je ne suis pas au courant des spécificités de la façon dont @ModelAttribute fonctionne, et je ne suis pas capable de vérifier maintenant, mais je suppose que depuis la forme JSP taglib sort du HTML pur, qu'il y a quelque chose dans le cadre de Spring lui-même qui est responsable de la liaison réelle. La documentation Spring suggère qu'il existe une sorte de macro de liaison Velocity disponible, voir http://static.springsource.org/spring/docs/3.0.0.M4/spring-framework-reference/html/ch16s04.html –