поймать 404 ошибка весенней загрузки, чтобы вернуть пользовательский HTML - PullRequest
0 голосов
/ 23 января 2019

Как я могу отловить ошибку 404 в приложении и создать собственный HTML-файл, такой как index.html? я не хочу использовать страницу в папке / error.

например, если я запрашиваю http://localhost:8080/test и нет сопоставления для теста, мое приложение должно отобразить index.html в папке / resources / template

Спасибо

**** ***** EDIT 1009 *

вроде как решил, но плохо, что я не могу изменить путь для отображения запроса, даже меняя возвращаемое значение getErrorPath.

@Controller
public class MyCustomErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        return "globalerrorview";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

1 Ответ

0 голосов
/ 23 января 2019

Есть много способов добиться пользовательской страницы ошибок. Один простой способ - использовать /resources/public/error/404.html, что нежелательно в вашем случае.

Опция: 1 Не могли бы вы попытаться настроить ControllerAdvice .

application.properties
    spring.mvc.throw-exception-if-no-handler-found=true
----------------------
@ControllerAdvice
class YourApplicationExceptionHandler {

    @ResponseStatus(HttpStatus.NOT_FOUND)  // 404
    @ExceptionHandler(NoHandlerFoundException.class)
    public ModelAndView handleNoHandlerFoundException() {
        return new ModelAndView("viewName");
    }
} 

Вариант 2: Если у вас есть какой-либо другой путь, определенный для ошибки, вы можете просто изменить путь / error. В вашем контроллере определите соответствующее отображение пути и маршрут к пользовательскому представлению.

server.error.path=/yourcustomerrorpath

Вариант 3: Использование ErrorController

@Controller
public class MyCustomErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        return "globalerrorview";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...