Весна - как обработать исключение - PullRequest
3 голосов
/ 13 октября 2010

Я использую Spring с Velocity.Время от времени скорость создает исключение, подобное

Ошибка в интерполяции строкового литерала: org.apache.velocity.exception.MethodInvocationException: вызов метода 'getMessage' в классе org.springframework.web.servlet.support.RequestContext выбросил класс исключения org.springframework.context.NoSuchMessageException: не найдено сообщение под кодом 'XX' для локали 'en_US'.

Вопрос в том, могу ли я указать пружине подавить NoSuchMessageException?Я довольно новичок в Spring, поэтому не знаю, смогу ли я создать обработчик исключений, который не будет выдавать исключение, если сообщение не найдено?В моем случае это допустимый случай, когда некоторые сообщения не находятся в файле messages.properties.

[EDIT] - я нашел способ org.apache.velocity.app.event.MethodExceptionEventHandler для обеспечения четного обработчика скорости.Однако я не уверен, как зарегистрировать его в Spring.

1 Ответ

2 голосов
/ 13 октября 2010

Я думаю, что было бы лучше обратиться к проблеме напрямую, а не пытаться подавить исключение, которое может привести к тому, что можно избежать поведения и незавершенных операций.

Однако вы не сказали нам, какВы хотите, чтобы система отвечала в случаях, когда сообщение не определено для данного кода.Вам нужна пустая строка или сам код должен использоваться в качестве сообщения по умолчанию?

Я предполагаю, что где-то в контексте Spring у вас есть определенный бин messageSource.Эти MessageSource бобы обычно имеют свойство useCodeAsDefaultMessage.По умолчанию это false, но при установке на true они будут возвращать сам код в качестве сообщения, если сообщение не определено.

В качестве альтернативы вы можете создать подкласс класса MessageSource (в зависимости от того, чтокоторый вы используете), и переопределите метод getDefaultMessage() для обработки случаев, когда код не может быть разрешен.

...