如何在不重新启动服务器的情况下查看 Broadleaf 中的 Thymeleaf 模板更改?

How do I see Thymeleaf template changes in Broadleaf without restarting my server?

我下载了 Broadleaf 的社区版,我正在尝试更改 Thymeleaf 模板中的一些标记。 (例如:layout/homepage.html)。但是,当我进行更改时,除非重新启动 Broadleaf 站点服务器,否则在刷新浏览器时看不到更改。我在编辑 JS 和 CSS 时遇到同样的问题。

是否需要更改设置才能在不重新启动服务器的情况下查看前端更改?我怀疑某种缓存设置阻止了模板从文件中重新加载。

抱歉误导论坛 post。他所指的缓存设置并不能缓解您遇到的问题。如果没有 Jrebel 或某种热交换机制,您将无法在不重新启动服务器的情况下看到更改。可能有用的一件事是,如果您 运行 来自 IDE 的项目,模板更改可能会显示,因为它可能会将您更改的模板放入部署的 Jar 中。

在 google 搜索后,我也 运行 搜索了 https://blog.codeleak.pl/2016/12/thymeleaf-reload-templates-and-static-resources.html。我不确定它是否有效,但值得一试

当 运行 从具有 spring-boot maven 目标的终端 运行 时,使用 IDE 重建似乎可以与 oob Breadleaf 演示站点一起使用:

mvn spring-boot:run

一旦它是 运行,如果你更新 IDE 里面的 templates/css 并且 build automatically enabled(重要!),那么该网站确实反映了刷新后的变化。

我验证了这适用于 IntelliJ、Spring 工具套件和基础 Eclipse。

对于 Broadleaf 6.0.6,我必须添加模板解析器 bean:

@Bean
public BroadleafTemplateResolver devTemplateResolver() {
    BroadleafThemeAwareTemplateResolver resolver = new BroadleafThemeAwareTemplateResolver();
    resolver.setPrefix(Paths.get("src/main/resources/").toUri().toString());
    resolver.setTemplateFolder("webTemplates/");
    resolver.setSuffix(".html");
    resolver.setCharacterEncoding("UTF-8");
    resolver.setCacheable(false);
    resolver.setOrder(10);
    return resolver;
}

那是一个"Demo Site"项目,SiteConfig.javaclass。

这个 bean 位于模板解析器列表的顶部,因此对模板文件的更改是从 src 文件夹中提取的,无需重新构建。

需要做的是在 Thymeleaf 中禁用模板捕获。 将其添加到您的应用程序属性文件中。

spring.thymeleaf.cache=false