Spring Boot - Thymeleaf 模板
Posted
技术标签:
【中文标题】Spring Boot - Thymeleaf 模板【英文标题】:Spring Boot - Thymeleaf template 【发布时间】:2016-01-26 20:41:11 【问题描述】:我正在使用 Spring Boot 1.2.7 和 Thymeleaf。
所有的 html 页面都在 src/main/resource/templates
文件夹中,当我在控制器中说 return "<viewName>"
时,一切正常。
现在,我想为 AngularJS 使用不同的文件夹结构。
想将页面移动到其他文件夹,例如webapps/pages
。
尝试如下配置解析器,
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter
@Bean
public ServletContextTemplateResolver getViewResolver()
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("webapps/pages/");
resolver.setSuffix(".html");
resolver.setTemplateMode("LEGACYHTML5");
return resolver;
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer)
configurer.enable();
仍然无法工作...我是否缺少任何其他配置,或者在这种情况下我不应该使用 Thymeleaf?
pom.xml 供你参考,
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
【问题讨论】:
【参考方案1】:如果您不想使用标准配置,可以在application.properties
(或application.yml
)文件中配置一个TemplateResolver
。您可以在the docs 中找到可用选项列表。
然后介绍一个新的@Configuration
以获得额外的TemplateResolver
s:
@Configuration
public class ThymeleafConfig
@Autowired
private SpringTemplateEngine templateEngine;
@PostConstruct
public void init()
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("webapps/pages/");
resolver.setSuffix(".html");
resolver.setTemplateMode("LEGACYHTML5");
resolver.setOrder(templateEngine.getTemplateResolvers().size());
templateEngine.addTemplateResolver(resolver);
【讨论】:
我希望模板中的文件少,webapps/pages 下的文件少。有可能吗? 对不起,我看错了你的问题。不过应该是可以的。我将编辑我的答案。 还是不行。我在 application.properties spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html spring.thymeleaf.mode=LEGACYHTML5 和上面的配置文件中添加了 /templates。但是 /webapp./pages/ 不起作用 你配置第二个 TemplateResolver 是否完全如上所示?请注意,前缀没有前面的 classpath:/ 或斜杠。我试过这个 sn-p,它对我有用。 是的,我也有同样的事情。以上是关于Spring Boot - Thymeleaf 模板的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot2:使用Spring Boot结合Thymeleaf模板引擎使用总结