我将如何不断渲染FTL页面,让我们说更新?

use*_*912 6 java freemarker spark-java

假设我有以下Java代码.

get("/", (request, response) -> {
    Map<String, Object> attributes = new HashMap<>();

    //attributes.put("message", "Hello World!");

    return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());
Run Code Online (Sandbox Code Playgroud)

那是来自Spark.当我导航到localhost:portnumber /时,我看到index.ftl呈现,我们假设(此处未编码)显示此应用程序的数据库中的数据.但是,我想说我想动态更新index.ftl.假设另一个用户从另一个应用程序实例更新了数据库(此处未编码),我想在第一个用户的页面上显示index.ftl中的新更改.如何在不重新渲染页面的情况下完成这项工作?

你不能只是在Java端有一个定时器,每10-20毫秒就会接收一次新数据.这也将大大浪费连接时间.是否可以以某种方式更新Java代码以更新数据库?像数据库的监听器?

这不仅是一个问题,而且您如何能够将新接收的数据推送到index.ftl而无需重新渲染?

小智 1

您可以使用 COMET 将数据推送到浏览器

您可以使用多种不同的 COMET 技术来实现该效果。我发现一篇非常全面的文章对于在它们之间进行比较和选择很有用。


使用 COMET 后,您可以利用此技巧<div>,以便仅刷新标签内的内容


另一个参考