Проверка Json во время связывания модели весной MVC 3.1
Я пытаюсь связать JSON с моделью с помощью @RequestBody.
Мы проверяем нашу модель, используя JSR303.
Вот метод подписи
@RequestMapping(value = "/editCampaign.do", method = { RequestMethod.POST })
public ModelAndView editCampaign(@RequestBody @Valid Campaign campaign,
HttpServletRequest request)
Если часть необходимой информации отсутствует, выдается исключение MethodArgumentNotValidException (как я читал в документации). Я действительно хочу иметь возможность вернуть эту информацию обратно в представление, чтобы показать пользователям, что они не заполнили обязательное поле. Когда возникает исключение, кажется, что уже слишком поздно. Очевидно, у меня нет обязательного результата для проверки.
Я неправильно использую фреймворк? Как правильно настроить этот сценарий?
1 ответ
Прежде всего, я рекомендую вам возвращать String вместо ModelAndView, особенно в Spring 3.1.
Если вы хотите поймать исключение из @ResponseBody
аннотированный метод, я рекомендую вам использовать следующее:
1) Поймать исключение с @ExceptionHandler
аннотация:
@ExceptionHandler(MethodArgumentNotValidException.class)
public String handleMyException(MethodArgumentNotValidException exception) {
return "redirect:errorMessage?error="+exception.getMessage());
}
а затем перенаправить для просмотра с пометкой @ResponseBody
аргумент
@RequestMapping(value="/errorMessage", method=RequestMethod.GET)
@Responsebody
public String handleMyExceptionOnRedirect(@RequestParamter("error") String error) {
return error;
}