Как настроить и обработать исключение TemplateInputException, выброшенное из тимелеафа? - PullRequest
0 голосов
/ 09 июля 2020

Если шаблон отсутствует в месте назначения (под /templates или любым настраиваемым путем), тимелеаф выдает TemplateInputException. Есть ли способ настроить и обработать исключение TemplateInputException, выброшенное из тимелефа? Я пробовал использовать @ControllerAdvice и Включение и отключение ErrorPageFilter из spring -boot, но не смог получить контроль над настройкой тимелеафа TemplateInputException.

Любое обходное решение будет оценено.

Пример ошибки от Thymeleaf:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

Root Cause
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers
    org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869)
    org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607)
    org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)
    org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072)
    org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362)
    org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
...