Я должен показать пользовательские сообщения в своем приложении Spring 3.0. У меня есть база данных с, в спящем режиме и существует несколько ограничений. У меня есть сомнения в как DataIntegrityViolationException
должен быть обработан хорошим способом. Интересно, существует ли способ отобразить исключение с набором сообщения в файле свойств, поскольку это возможно в Ограничительной проверке. Я мог обработать его автоматически всегда, или я должен поймать это исключение в каждом контроллере?
Проблема с показывать удобное для пользователя сообщений в случае нарушения ограничений заключается в том, что название ограничения теряется при ограничении Hibernate ConstanaintViolationException
, преобразуется на пружину data.avectegriteviolationException
.
Однако вы можете настроить эту логику перевода. Если вы используете LocalSessiveFactoryBean
для доступа к Hibernate, вы можете поставить его на заказ SQLExceptionTranslator
(см. LocalFessiveFortoryBean.jdbCexceptionTranslator
). Этот преводчик исключения может перевести ConstanaintViolationException
в свой собственный класс исключения, сохраняя имя ограничения.
Весна 3 обеспечивает два способа обращения с этим - HandlexceptionResolver
в вашем beans.xml, или @ExceptionHandler
в вашем контроллере. Они оба делают то же самое - они превращают исключение в вид, чтобы рендер.
Оба документированы здесь .