Spring MVC - обрабатывать исключение с @ExceptionHandler не отображает новое представление - PullRequest
0 голосов
/ 29 марта 2011

Я, кажется, столкнулся с ограничением Spring - у меня есть простой случай для обработки - я имитирую исключение из метода обслуживания:

@RequestMapping( method = RequestMethod.POST )
public String register( @RequestParam( "mail" ) String mail ){
    throw new IllegalStateException();
}

и пытается обработать новый запрос через:

@RequestMapping( value = "/exception_location" )
@ExceptionHandler( IllegalStateException.class )
public String handleException( IllegalStateException ex ){
    return "exception_view";
}

my web.xml:

<error-page>
    <exception-type>java.lang.IllegalStateException</exception-type>
    <location>/exception_location</location>
</error-page>

Что происходит, так это то, что handleException срабатывает, но представление исключения не отображается на клиенте. Конфигурация Spring в порядке или запись в web.xml не нужна? Я что-то упустил, что может быть причиной того, что обработчик не вызвали? Любые отзывы приветствуются. Благодарю.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Я обнаружил проблему - метод, генерирующий исключение, должен находиться в одном контроллере с методом обработчика.Я переместил оба метода в одном контроллере, и все работает отлично.

0 голосов
/ 29 марта 2011

Эк, это кажется мне очень странным.Если вы используете функции обработки исключений Spring, вам не нужна запись в web.xml.Кроме того, обычно вы не смешиваете и сопоставляете @RequestMapping и @ExceptionHandler.Короче говоря, все, что вам нужно, это ...

@ExceptionHandler( IllegalStateException.class )
public String handleException( IllegalStateException ex ){
    return "exception_view";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...