Spring 实时重新加载thymeleaf模板

Spring 实时重新加载thymeleaf模板,spring,thymeleaf,livereload,spring-boot-devtools,spring-boot-2,Spring,Thymeleaf,Livereload,Spring Boot Devtools,Spring Boot 2,当我更改驻留在/templates中的thymeleaf.html文件时,我希望浏览器自动重新加载页面。我已经安装了livereload插件,它能够与spring引导服务器进行握手。但是,在更改thymeleaf模板文件时,我必须手动重新加载浏览器。 任何我可能缺少的建议。显然,我已经启用了spring boot devtools,并且还手动更新了属性devtools.livereload.enabled=true。SpringDevTools正确地将更改发布到BuildTarget中的任何模板

当我更改驻留在/templates中的thymeleaf.html文件时,我希望浏览器自动重新加载页面。我已经安装了livereload插件,它能够与spring引导服务器进行握手。但是,在更改thymeleaf模板文件时,我必须手动重新加载浏览器。 任何我可能缺少的建议。显然,我已经启用了
spring boot devtools
,并且还手动更新了属性
devtools.livereload.enabled=true
。SpringDevTools正确地将更改发布到BuildTarget中的任何模板或控制器,通过手动重新加载浏览器,我看到了更改

根据spring文档

某些资源在更改时不一定需要触发重新启动。例如,可以在位编辑Thymeleaf模板。默认情况下,更改/META-INF/maven、/META-INF/resources、/resources、/static、/public或/templates中的资源不会触发重新启动,但会触发重新启动

我让我的本地计算机在一个坏的https上运行。(某些证书问题,导致chrome地址栏中出现
不安全的消息。这可能是live reload无法工作的原因。

编辑:

您可以使用实时重新加载插件等来启用浏览器的自动重新刷新。您可以使用

来自官方spring boot文档的提示如下:

解释为什么它不能开箱即用

我认为你在这里混为一谈。就Spring Boot应用程序而言,“实时重新加载”意味着您在编辑html后不需要重新启动应用程序服务器。这并不意味着您可以像
angular
中那样从
webpack dev server
中进行热重新加载

因此,您仍然必须触发浏览器页面的刷新

有关如何在WDS中工作的更多详细信息,请参见此处:


从spring的角度来看,经过3年的FRU,这里有一个工作热插拔的工作解决方案:

下面是我经过测试的设置(这是我为使其工作所做的唯一更改)

application.yaml

spring:
  thymeleaf: # Thymeleaf
    cache: false
    mode: HTML
    encoding: UTF-8
    prefix: file:src/main/resources/templates/
  resources: # Static resources
    static-locations: file:src/main/resources/static/
    cache:
      period: 0
它的作用:

  • 如果您在
    static/
    templates/
  • 这样做不需要手动编译或重新启动整个web服务器
它没有什么:

  • 在浏览器中为您重新加载页面(您仍然需要在浏览器中刷新页面;顺便说一句,LiveReload Chrome扩展也无法工作,也许通过一些网页魔术,您可以使其工作)
这都是假设您没有覆盖默认路径(
/resources/templates
/resources/static


另外,我试过使用自签名的TLS证书,它仍然有效。但它不会像Angular一样在浏览器页面从盒子里重新加载。

在春季自动重新加载HTML/CSS/JS Thymeleaf可以简单且无缺陷,只在IntelliJ中测试过

将此添加到maven,使用${spring.version}var或替换为您的版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>${spring.version}</version>
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>

org.springframework.boot


这不是真的,我在问题的引文中添加了一个超链接,以明确spring团队所说的“实时重新加载”是什么意思,就像原始spring文档中一样。您应该能够在这里看到您自己的解释中的矛盾,或者只需遵循您的第二个链接。这种过度炒作的
问题只会起作用
ENTERPRISE
框架就是你必须花费数小时来让它正常工作。facebook可以用php编写facebook,谷歌也不使用
ENTERPRISE
解决方案,任何其他堆栈、rails、play都比这只恐龙更能正常工作。你试过浏览器插件吗?成功了吗?顺便说一句gh spring框架本身就是一个宇宙,通过spring引导和自动配置,生活变得更加轻松。是的,我在问题中提到,浏览器插件与live reload服务器成功握手。我不在乎在他们的github上引发一个bug,因为它会像他们关闭的17000个其他bug一样关闭。没有一个值得尊敬的开源项目在他们的github上有17000个bug。让生活变得简单了?如果现在还是2010年的话。看看,这是这个问题的正确答案。
<script src="http://localhost:35729/livereload.js"></script>