【发布时间】:2019-04-29 06:12:17
【问题描述】:
我的 Spring Boot 项目中有我的主页,名为 home.html。我有一个页面控制器来呈现这个home.html。下面是控制器的代码。
@RequestMapping(value = "/home")
public String goToHome(Model model) {
return "home";
}
在我的项目中,home.html 位于 webapp/WEB-INF/static/ 文件夹中。所以路径是webapp/WEB-INF/static/home.html
我的home.html 如下所示
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/html">
<head>
<title>home</title>
</head>
<body>
<object th:include="/en/home :: home-body" th:remove="tag"/>
</body>
</html>
我在外部服务器中有home.html 文件,如下所示。
<div th:fragment="home-body">
<p>Welcome to home page</p>
</div>
这个文件的路径是http://external-server.com/fragments/en/home.html
我想要做的是渲染这个从外部服务器获取的home-body 片段部分,该片段部分位于位于 Spring Boot Tomcat 服务器中的 home.html 内。
我添加了下面的 Bean 作为配置来获取这个 home-body 片段。下面是它的代码。
@Bean
public UrlTemplateResolver urlTemplateResolver(){
UrlTemplateResolver urlTemplateResolver = new UrlTemplateResolver();
boolean isCmsContentEnable = Boolean.parseBoolean( env.getProperty( ConfigurationConstants.CMS_CONTENT_ENABLE ) );
if( isCmsContentEnable )
{
urlTemplateResolver.setPrefix( "http://external-server.com/fragments/" );
urlTemplateResolver.setSuffix( ".html" );
urlTemplateResolver.setCharacterEncoding( "UTF-8" );
urlTemplateResolver.setTemplateMode( "HTML5" );
urlTemplateResolver.setCacheable( false );
urlTemplateResolver.setOrder(10);
}
return urlTemplateResolver;
}
现在,当我尝试转到主页时,会发生什么而不是渲染驻留在 Spring Boot Tomcat 服务器中的 home.html 内的 home-body 片段,而是直接渲染驻留在外部服务器中的 home.html。
我该如何解决这个问题?谁能指出我在这里做错了什么。谢谢
【问题讨论】:
标签: java html spring spring-boot thymeleaf