Spring MVC: как вернуть пользовательские страницы ошибок 404?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring MVC: как вернуть пользовательские страницы ошибок 404?

Сообщение Anonymous »

Я ищу простой способ вернуть настроенные страницы ошибок 404 в Spring 4, когда запрошенный ресурс не найден. Запросы к разным типам доменов должны приводить к разным страницам ошибок.

Вот код, подтверждающий мое намерение (Meter — это доменный класс):

Код: Выделить всё

@RequestMapping(value = "/{number}", method = RequestMethod.GET)
public String getMeterDetails(@PathVariable("number") final Long number, final Model model) {
final Meter result = meterService.findOne(number);
if (result == null) {
// here some code to return an errorpage
}

model.addAttribute("meter", result);
return "meters/details";
}
Я представляю несколько способов решения этой проблемы. Во-первых, будет возможность создавать RuntimeException, например

Код: Выделить всё

@ResponseStatus(HttpStatus.NOT_FOUND)
public class MeterNotFoundExcption extends RuntimeException { }
а затем используйте обработчик исключений для отображения пользовательской страницы ошибок (возможно, содержащей ссылку на список счетчиков или что-то еще подходящее).

Но мне не нравится засорять мое приложение множеством мелких исключений.

Другая возможность — использовать HttpServletResponse и установить код состояния. вручную:

Код: Выделить всё

@RequestMapping(value = "/{number}", method = RequestMethod.GET)
public String getMeterDetails(@PathVariable("number") final Long number, final Model model,
final HttpServletResponse response) {
final Meter meter = meterService.findOne(number);
if (meter == null) {
response.setStatus(HttpStatus.NOT_FOUND.value());
return "meters/notfound";
}

model.addAttribute("meter", meter);
return "meters/details";
}
Но в этом решении мне приходится дублировать первые 5 строк для многих методов контроллера (например, редактирования, удаления).

Есть ли элегантный способ предотвратить многократное дублирование этих строк?

Подробнее здесь: https://stackoverflow.com/questions/210 ... errorpages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»