2015-04-22 4 views
1

У меня есть Spring RequestMapping, который берет структуру JSON и преобразует ее в POJO. Если я отправлю маршрут некорректной структуре JSON, я вернусь к «400 Bad Request», но то, что я хотел бы получить, - это сообщение об ошибке, в котором указано, почему это был плохой запрос. У меня есть Validator, также проверяющий структуру JSON, но кажется, что он не вызывается, если структура не может быть преобразована. Есть ли способ, с помощью которого я могу получить доступ к встроенным ошибкам или исключениям HttpMessageConverter?Запрос на преобразование формы запроса

ответ

1

Я думаю, вы можете использовать ResponseEntityExceptionHandler для этого, переопределив метод handleHttpMessageNotReadable.

От: 17.11.3 Handling Standard Spring MVC Exceptions:

Если вы предпочитаете писать содержание ошибок с помощью методов @ExceptionHandler вы можете продлить ResponseEntityExceptionHandler вместо этого. Это удобная база для классов @ControllerAdvice, предоставляющая метод @ExceptionHandler для обработки стандартных исключений Spring MVC и возврата ResponseEntity. Это позволяет настраивать ответ и записывать содержимое ошибки с помощью конвертеров сообщений. Подробнее см. ResponseEntityExceptionHandler javadocs.

Пример использования в ResponseEntityExceptionHandler можно найти здесь: http://www.jayway.com/2013/02/03/improve-your-spring-rest-api-part-iii/

В противном случае вы можете найти более Spring MVC подходы обработки исключений здесь: https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

Если ваши потребности не слишком сложны, вы, возможно, просто хочу использовать SimpleMappingExceptionResolver

+0

Спасибо за ответ. Я считаю, что это заставило меня правильно исправить эту проблему. Я добавил простой «@ ExceptionHandler» к моему Контроллеру и заметил что-то странное. Когда я пытаюсь отправить данные JSON на маршрут, я получаю 'javax.servlet.ServletException: не удалось разрешить просмотр с именем« group/person »в сервлет с именем« dispatcherServlet ». На данный момент я даже не уверен, что маршрут даже получает неверные данные JSON, так как сам маршрут не может быть найден. Если я отправлю хорошо сформированную структуру JSON, маршрут будет вызван просто отлично. – dmux

+0

Рад слышать, что вы добиваетесь прогресса. Что-то звучит немного странно, если вы разместите сокращенный пример своей проблемы, который может пролить немного света, что вы видите. – ninj

Смежные вопросы