Je n'arrive pas à obtenir une validation basique avec Spring MVC.Spring MVC + Hibernate Validator + Velocity
J'ai la POJO suivante:
public class Example {
@NotNull(message="You must enter a value")
@Size(min=2, max="2", message="You must enter 2 characters")
private String value;
public String getValue() { return value; }
public void setValue(String value) { this.value = value; }
}
Mon contrôleur très basique ressemble à ceci:
@Controller
@RequestMapping("/value.vm")
public class ValueController {
@Autowired
private Validator validator;
@RequestMapping()
public ModelAndView display(@Valid @ModelAttribute("example") Example e, BindingResult result) {
//Details omitted
}
Mon modèle de vitesse est tout aussi simple:
<form target="_self" enctype="application/x-www-form-urlencoded" action="/value.vm" method="post">
#springBind("example")
#springFormInput("example.value", "")
#springShowErrors("<br />", "")
</form>
Mon servlet. Le fichier XML comprend:
<mvc:annotation-driven />
Si je valide manuellement une soumission de formulaire vierge (c.-à-d. validator.validate (e)), je vois que mes messages d'erreur sont générés, cependant ils n'existent jamais sur mon BindingResult.
Des idées pour lesquelles mon résultat de liaison n'obtient pas ces erreurs?
Si vous souhaitez utiliser la validation javax.validation.Validator et JSR-303, placez une implémentation sur votre chemin de classe, comme hibernate-validator. – GaryF
@GaryF J'ai hibernate-validator sur mon classpath, et c'est ce que j'utilisais. Cependant, les erreurs de validation n'ont pas été placées sur l'objet BindingResult, et #springShowErrors n'affichait rien de mal avec l'entrée de formulaire vide. Est-ce qu'il me manque un autre morceau de configuration? Une fois que j'ai changé l'implémentation de Validation, le ressort affiche correctement les erreurs dans le balisage. – Scott
Votre config m'a l'air bien. Je ne suis pas familier avec la façon dont les balises de modèle de vitesse fonctionnent, mais le côté de ressort semble bon. – GaryF