Проверка 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;
          } 
Другие вопросы по тегам