Как создать настраиваемую страницу ошибки в Spring?

  • 9 сентября 2023 г. 17:37
Ответы на вопрос 3
Для создания настраиваемой страницы ошибки в Spring Boot можно использовать следующий подход:

1. Создайте класс, который будет обрабатывать ошибки. Класс должен быть аннотирован как `@ControllerAdvice` и иметь методы для обработки различных ошибок. Например:

```java
@ControllerAdvice
public class CustomErrorController {

    @ExceptionHandler(NotFoundException.class)
    public String handleNotFoundException(Model model) {
        model.addAttribute("errorMessage", "Страница не найдена");
        return "error";
    }

    @ExceptionHandler(Exception.class)
    public String handleGeneralException(Model model) {
        model.addAttribute("errorMessage", "Произошла ошибка");
        return "error";
    }
}
```

2. Создайте страницу ошибки (например, `error.html`) в папке `src/main/resources/templates`. На этой странице можно использовать переданные атрибуты модели для отображения информации об ошибке. Например:

```html
<html>
<head>
    <title>Ошибка</title>
</head>
<body>
    <h1>Ошибка</h1>
    <p th:text="${errorMessage}"></p>
</body>
</html>
```

3. Добавьте свойство `server.error.whitelabel.enabled=false` в файл `application.properties` или `application.yml`, чтобы отключить автоматическую страницу ошибки Spring Boot.

Теперь, если возникает ошибка, соответствующий метод в классе `CustomErrorController` будет вызван, а затем будет отображена настраиваемая страница ошибки.

Обратите внимание, что в примере выше `NotFoundException` - это собственный класс исключения, который может быть определен в вашем проекте для представления определенных ошибок. Вы можете определить свои собственные классы исключений и обрабатывать их в `CustomErrorController`.
Возможный вариант решения выглядит следующим образом: 
 
```
@Controller
public class Controller404 {

    @RequestMapping("/404")
    public String error404() {
        return "/404";
    }
}
```
Похожие вопросы