Я пишу веб-приложение с весны, и у меня проблемы с проверкой форм. Это первый раз, когда я использую это, поэтому я все еще должен понять это ...
В основном у меня есть контроллер с методом обработки формы, который:
@RequestMapping(params = "action=gestprodotti")
public ModelAndView doGestProdotti(
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "activity", required = false) String activity,
@ModelAttribute Prodotto prod, BindingResult bindresult,
HttpSession session) throws Exception {
контроллер аннотирован и ничего не расширяет. Далее в методе, после получения объекта, связанного с формой, я делаю:
Validator valid = activityHandler.getValidator();
valid.validate(backingObject, bindresult);
if (bindresult.hasErrors()){
return handleRequest(action, ACTIVITY_NEW_ITEM, jspComponent,
page, itemId, backingObject, bindresult, appstatus);
}
это означает, что я вызываю валидатор вручную и возвращаю ту же страницу формы (результат ModelAndView).
Код валидатора:
public static final class ProdottoValidator implements Validator{
@Override
public boolean supports(Class<?> other) {
return Prodotto.class.isAssignableFrom(other);
}
@Override
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "codice", "Il codice è richiesto");
}
}
и соответствующий код JSP:
<td colspan="2" align="left">Codice<form:input id="code"
path="codice" /><form:errors path="codice" /></td>
, который отлично работает для привязки, но я не получаю никакой ошибки. Я не создал ни одного файла messages.properties, но, думаю, мне все равно нужно что-то увидеть. Ошибки обнаруживаются, потому что bindresult.hasErrors()
дает true, но отображаемый html ничего не показывает вместо формы: ошибки. Я пропускаю что-то вроде конфигурации или что-то еще? Это потому что нет файла messages.properties, что он не работает?