Spring 实时重新加载thymeleaf模板
当我更改驻留在/templates中的thymeleaf.html文件时,我希望浏览器自动重新加载页面。我已经安装了livereload插件,它能够与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中的任何模板
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>