Spring Boot Thymeleaf片段来自控制器而不是视图bean

时间:2017-11-29 15:02:14

标签: spring spring-boot thymeleaf

我已经阅读了文档,但它仍然有点令人困惑。 假设我有一个名为index.html的模板。在index.html里面我想根据请求更新带有片段的容器标签。 这是我的片段searchResult.html:

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
    <div th:fragment="searchResult">
    </div>
</body>
</html>

如果我希望这个片段显示在index.html内的特定标签内,我该如何从控制器执行此操作?

@RequestMapping("/")
public String showIndex(){
 return "index";
}
@RequestMapping("/search")
public String search(){
 return "index :: searchResult";
}

在showIndex()中,我想显示除片段之外的所有内容。 在映射到search()的get请求期间,我想返回包括片段在内的整个索引。我的模板和控制器应该是什么样的?

模板:

<html>
<body>
<div>Usual content shown all the time</div>
<div id="searchResult">
 THIS IS WHERE I WANT THE FRAGMENT TO BE INJECTED
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

在大多数情况下,Thymeleaf建立在简单的请求/响应工作流程之上。当你开始添加这样的控制器时:

@RequestMapping("/search")
public String search(){
  return "index :: searchResult";
}

你必须使用javascript / ajax自己调用该控制器并使用某种形式的dom操作来替换该元素。百里香叶没有机制可以根据变化自动更新片段,片段主要是为了简化在多个页面上重复使用相同的html,而不是在没有页面刷新的情况下动态更新页面。

如果你想以百里香的方式去做,那么你的评论是可行的。