服务器在Spring Boot和thymeleaf中发送事件

问题描述 投票:0回答:1

我正在将Spring Boot与thymeleaf模板引擎一起使用。如果保存了新对象,我需要将更新从服务器推送到浏览器。但是由于sse仅允许发送文本数据,因此如何使用sse传递对象。到目前为止,我唯一能读的就是可以使用JSON.parse()方法将字符串转换为json。但这对我不起作用,因为百里香使用对象渲染html。我是这些术语的新手,请帮助我,欢迎提出任何建议。

spring-boot thymeleaf server-sent-events
1个回答
0
投票

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调用)。

© www.soinside.com 2019 - 2024. All rights reserved.