Ich habe einige gute Stunden damit verbracht, also ist es Zeit zu fragen.Wie wird eine Fehlermeldung vom Spring Validator angezeigt?
-Controller
@RequestMapping(value="/articleHeaderEdit/{articleId}", method=RequestMethod.POST)
public ModelAndView submitHeader(@PathVariable Integer articleId, @ModelAttribute("screenObject") ArticleHeaderEditScreenObject articleHeaderEditScreenObject, @ModelAttribute("article") Article article, BindingResult bindingResult, Model model, Locale locale) throws Exception {
validator.validate(articleHeaderEditScreenObject, bindingResult);
ModelAndView modelAndView=new ModelAndView();
if(bindingResult.hasErrors()) {
initializeScreenObject(articleHeaderEditScreenObject, article, locale);
modelAndView.setViewName(WebView.ARTICLE_HEADER_EDIT_PAGE.getViewName());
} else {
modelAndView.setViewName("redirect:/article/" + articleId);
}
return modelAndView;
}
Validator
@Component
public class ArticleHeaderEditScreenObjectValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return ArticleHeaderEditScreenObject.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object validatedObject, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "title", "required.title", "Title is required.");
}
Ansicht (nur die relevanten HTML)
<form:form modelAttribute="screenObject" action="${screenObject.getFormAction()}">
<form:errors path="*" />
<form:errors />
<form:input path="title" />
<form:errors path="title" />
Der Fehler ist da. Ich bekomme die richtige Ansicht und überprüfe das Debugging. Keines der drei Fehler-Tags funktioniert jedoch. Wenn ich die Seite absende, speichert sie neu eingegebene Daten, so dass das Modell funktioniert.
Ich sehe eine Menge Leute, die damit kämpfen. Allgemein ist es die Tatsache, dass das Modellattribut in der Form und im Controller einen anderen Namen hat, aber in diesem Fall sind sie identisch. Irgendeine Idee, was noch fehlt?
können Sie Ihren Validator Code posten? –
Ich habe meinen Validator hinzugefügt und den Code aktualisiert. Ich versuche immer noch, Dinge zum Laufen zu bringen. – jacekn
Es stellt sich heraus, dass Spring über das zweite Modellattribut im Post verwirrt ist. Wenn ich '@ModelAttribute (" article ") Artikel Artikel aus der Parameterliste nehme, erscheinen die Fehler auf der Seite. Sehr, sehr verwirrendes Zeug ... – jacekn