【问题标题】:How do I see Thymeleaf template changes in Broadleaf without restarting my server?如何在不重新启动服务器的情况下查看 Broadleaf 中的 Thymeleaf 模板更改?
【发布时间】:2022-05-03 22:33:28
【问题描述】:

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

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

【问题讨论】:

  • 根据旧论坛帖子,看起来有一个缓存设置。设置 cache.page.templates 应该防止模板缓存。开发人员说他们使用 JRebel 进行热部署,因此他们不依赖缓存设置。 forum.broadleafcommerce.org/viewtopic.php?t=1565

标签: thymeleaf broadleaf-commerce


【解决方案1】:

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

在谷歌搜索后,我也遇到了这个问题https://blog.codeleak.pl/2016/12/thymeleaf-reload-templates-and-static-resources.html。我不确定它是否有效,但值得一试

【讨论】:

  • 好的,我们会尝试一些。我们的后端人员有 JRebel,但没有前端人员。我们也看到了那篇文章,所以我们可能会在购买 JRebel 之前对这种方法进行修改。我们会报告我们的发现。
  • 如果我们选中 IntelliJ 设置中名为“自动构建项目”的框(在构建... -> 编译器设置下),我们可以在没有 JRebel 的情况下更改模板。唯一需要注意的是,您不能在 IDE 中运行该项目。您必须在单独的终端中运行它。
  • 这真的很有趣。谢谢你的更新。如需关于 Broadleaf 的更多帮助,您还可以在我们的公共 Gitter 上发帖 gitter.im/BroadleafCommerce/BroadleafCommerce。我们同时监控 StackOverflow 和 Gitter。
  • 它也可以在 eclipse/STS 中自动启用构建。
【解决方案2】:

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

mvn spring-boot:run

一旦运行,如果您在 IDE 中更新模板/css 并使用自动启用构建(重要!),那么网站会在刷新时反映更改。

我验证了这适用于 IntelliJ、Spring Tool Suite 和基本 Eclipse。

【讨论】:

  • 只要我不在 IntelliJ IDE 中运行项目,这对我有用。如果我想在 IDE 中运行 Broadleaf,听起来我必须使用 JRebel 之类的东西。
【解决方案3】:

使用 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.java 类。

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

【讨论】:

    【解决方案4】:

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

    spring.thymeleaf.cache=false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多