2015-10-27 139 views
1

我們的項目中有多個thmeleaf模板解析器。Spring boot - Thymeleaf模板 - 多個解析器

我們的項目結構,

/src/main/java/*.java 
/src/main/resources/pages/*.html 
/src/main/resources/templates/*.html 

內部資源,我們有網頁和模板文件夾。

所以,必須添加一個更多的視圖解析器,以在頁面內有HTML文件。

@Configuration 
public class ThymeleafConfig { 

    @Autowired 
    private SpringTemplateEngine templateEngine; 

    @PostConstruct 
    public void init() { 
     ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver(); 

     resolver.setPrefix("pages/"); 
     resolver.setSuffix(".html"); 
     resolver.setTemplateMode("LEGACYHTML5"); 
     resolver.setOrder(templateEngine.getTemplateResolvers().size()); 

     templateEngine.addTemplateResolver(resolver); 
    } 

} 

現在,想一些文件移動到/ SRS /主/ web應用/

/src/main/resources/ 
/src/main/webapp/*.html 

SO,試圖與上述配置文件,

resolver.setPrefix("webapp/"); 

嘗試下面的代碼另外,

resolver.setPrefix("/webapp/"); 

現在,獲取f以下錯誤。

2015-10-27 15:36:13.078 [http-nio-8080-exec-8] ERROR org.thymeleaf.TemplateEngine - [THYMELEAF][http-nio-8080-exec-8] Exception processing template "agent": Error resolving template "agent", template might not exist or might not be accessible by any of the configured Template Resolvers 
2015-10-27 15:36:13.094 [http-nio-8080-exec-8] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "agent", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause 
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "agent", template might not exist or might not be accessible by any of the configured Template Resolvers 
    at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) ~[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] 
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104) ~[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] 

任何其他配置WebApp文件夾做...

回答

0

改變ClassLoaderTemplateResolver到ServletContextTemplateResolver解決了這個問題。我想,出於安全原因,ClassLoaderTemplateResolver無法讀取webapp下的文件。

@PostConstruct 
    public void init() { 
     ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); 

     resolver.setPrefix("/"); 
     resolver.setSuffix(".html"); 
     resolver.setTemplateMode("LEGACYHTML5"); 
     resolver.setOrder(templateEngine.getTemplateResolvers().size()); 

     templateEngine.addTemplateResolver(resolver); 
    } 
相關問題