我正在将Spring Boot与thymeleaf模板引擎一起使用。如果保存了新对象,我需要将更新从服务器推送到浏览器。但是由于sse仅允许发送文本数据,因此如何使用sse传递对象。到目前为止,我唯一能读的就是可以使用JSON.parse()方法将字符串转换为json。但这对我不起作用,因为百里香使用对象渲染html。我是这些术语的新手,请帮助我,欢迎提出任何建议。
Thymeleaf是一个模板引擎,允许您在服务器上呈现页面。
一个基本示例如下所示:
@Controller
@RequestMapping("/")
public class SampleViewController {
@GetMapping
public String getIndex(Model model) {
model.addAttribute("message", "duke");
model.addAttribute("order", new Order());
return "index";
}
}
[当用户现在请求/
时,index
模板将使用我们传递给它的Model
进行渲染,例如替换为:
<h2>
<span th:text="'Hello, ' + ${message}"></span>
</h2>
渲染后]
,因为仅当有人请求此页面时才进行渲染。<h2> <span>Hello, duke</span> </h2>
或多或少static
根据您的情况,您需要其他动态行为。因此,您可以将JavaScript引入Thymeleaf模板并开始使用SSE(例如,按照此tutorial进行操作)。因此,无论何时从服务器发送事件,您都将基本注册一些SSE事件流并在客户端上更新页面。
您可以在Thymeleaf模板中添加以下内容:
<script th:inline="javascript"> </script>
并添加缺少的JavaScript部分以使SSE正常运行。
因此,使用Thymeleaf作为模板引擎来呈现服务器端页面并不会限制您还向页面添加JavaScript,以使客户端具有动态行为(例如,用于SSE,WebSocket,AJAX调用)。