Mat*_*ble 1 java spring thymeleaf spring-boot
我创建了一个启用了 i18n 的 Spring Boot 2.1.3 应用程序,添加了 devtools,并安装了 Firefox LiveReload 扩展。不幸的是,当我更改 Thymeleaf 模板或 i18n 消息时,它并没有改变。在春季启动文件似乎表明,所有你需要做的就是安装devtools,它会禁用静态资源的缓存。
这是我为创建应用程序所做的工作:
mkdir bootiful-i18n
cd bootiful-i18n
http https://start.spring.io/starter.zip dependencies==web,thymeleaf -d | tar xvz
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个HomeController.java:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
String home() {
return "home";
}
}
Run Code Online (Sandbox Code Playgroud)
我在以下位置创建了一个 Thymeleaf 模板src/main/resources/templates/home.html:
<html xmlns:th="http://www.thymeleaf.org">
<body>
<h1 th:text="#{title}"></h1>
<p th:text="#{message}"></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我添加了一个messages.properties文件src/main/resources:
title=Welcome
message=Hello! I hope you're having a great day.
Run Code Online (Sandbox Code Playgroud)
这一切都很好。为了启用热重载,我将 devtools 添加到pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我重新启动了服务器,启用了 LiveReload 并导航到http://localhost:8080。我试图改变和保存都home.html和messages.properties并刷新我的浏览器。浏览器中的输出不会改变。我还需要做些什么来禁用 Spring Boot 2.1 中 Thymeleaf 模板和消息包的缓存?
Devtools 将禁用缓存,以便在需要再次渲染时可以重新考虑对模板文件的更新。
但是,当您的应用程序在 JVM 进程中启动时,没有任何内容指向您的源文件,它只能看到类路径。因此,您对源文件所做的任何更改都需要更新到类路径位置,这通常是通过要求您的 IDE“构建项目”来实现的。
因此,模板缺少的步骤是,如果文档对此不清楚,请随时提出建议,因为我们已经对此进行了大量迭代。
虽然没有关于 i18n 的具体内容。如果您更改它们并更新类路径,我们将重新启动应用程序,而不是像我们为模板所做的那样选择它。我们曾经尝试过支持这一点,有关更多详细信息,请参阅此问题。话虽如此,您不应该期望对资源文件的更改“会起作用”。例如,对配置的更改显然需要重新启动应用程序(再次,通过在使用 devtools 时更新类路径)。
关于 IDE 支持的一些补充说明:
如果您不使用 IDE,则需要为您更新类路径。我们试图支持开箱即用,但结果证明非常复杂。如果您使用的是 Gradle ,有一条评论可以帮助您。
| 归档时间: |
|
| 查看次数: |
2714 次 |
| 最近记录: |