如何跨域共享Thymeleaf模板

时间:2016-11-09 16:35:54

标签: spring spring-boot thymeleaf

我正在使用Spring Boot 1.4.1和spring-boot-starter-thymeleaf依赖开发一些Spring应用程序。我希望在我的网络服务器上分享我的Thymeleaf模板(例如页眉和页脚),以便能够将它们包含在我的应用程序中。实现这一目标的最简单方法是在我的每个应用程序中包含我的模板的服务器根目录相对链接。这样,我的应用程序将是可移植的,我可以让它在我的所有环境(开发,测试,产品)上无缝工作。

从我的角度来看,这似乎并不是什么大问题,因为Thymeleaf已经考虑了服务器相对URL

<th:block th:replace="@{~/my/share/header}" />

然而,我无法让它发挥作用。我总是得到像

这样的错误
  

解析模板&#34; / my / share / header&#34;时出错,模板可能不存在,或者任何配置的模板解析器都无法访问

我可以确认我的模板可用,因为http://localhost/my/share/header.html正确响应(顺便说一句:我使用Apache httpd托管我的应用,所以我使用相同的端口)。

我还尝试添加&#34; .html&#34;在URL的末尾或实现URLTemplateResolver(见下文),但不幸的是,似乎没有任何工作。

@Bean
public ITemplateResolver templateResolver() {
    UrlTemplateResolver templateResolver = new UrlTemplateResolver();
    templateResolver.setSuffix(".html");
    return templateResolver; 
} 

有人知道如何使用服务器根目录相对URL嵌入模板吗?

1 个答案:

答案 0 :(得分:0)

听起来在当前版本的Thymeleaf中无法实现这一点,正如您在GitHub帖子中所看到的那样。我的解决方法是使用UrlTemplateResolver,如初始帖子中所述,并在我的Spring Boot项目(application.properties)中添加一个变量。这样,我可以根据我的部署环境管理不同的URL。