Thymeleaf:如何在 js 文件中获取环境变量而不是 html
Thymeleaf: How to get environment variable in js file not html
我正在使用 thymleaf
引擎。
我可以在 .html
文件中得到 environment variable
。但是我没能在 .js
文件中得到 environment variable
。如何在 .js
文件中获取 environment variable
而不是 .html
?
下面的代码显示了我在 .js
和 .html
中定义 environment variable
时的结果
application.properties
huge=huge
当我在foo.html
中定义environment variable
<script type="text/javascript">
hugeOfHtml = "[[${@environment.getProperty('huge')}]]";
</script>
结果在chrome F12
<script type="text/javascript">
hugeOfHtml = "huge";
</script>
与我在 foo.js
中定义 environment variable
相比
hugeOfJs = "[[${@environment.getProperty('huge')}]]";
结果在chrome F12
hugeOfJs = "[[${@environment.getProperty('huge')}]]";
如何在 .js
文件中获取 environment variable
而不是 .html
?
我假设您正在使用 spring boot 2 和 thymeleaf 3。外部化的 js 文件很可能位于 src/resources/static/
路径中,如果是这样,thymeleaf 将不会处理它。现在假设你将它移动到另一个目录 src/resources/templates/js/
,thymeleaf 应该处理外部化的 js 文件并给出你所期望的结果。
但是,鉴于外部化的 js 文件不再是静态资源,您将不得不在控制器中公开一个 get 方法来加载外部化的 js 文件。该方法将如下所示;
@Controller
public class FooController {
@GetMapping("/js/foo.js")
public String loadFooDotJs(){
return "/js/foo.js";
}
}
上述方法将加载外部化的 js 文件,使用 thymeleaf 对其进行处理,并 return 进行相应处理。
如果您只使用 spring;不是 spring 引导,我相信您还必须创建模板解析器和模板引擎。 Here is a good article by Baeldung.
我正在使用 thymleaf
引擎。
我可以在 .html
文件中得到 environment variable
。但是我没能在 .js
文件中得到 environment variable
。如何在 .js
文件中获取 environment variable
而不是 .html
?
下面的代码显示了我在 .js
和 .html
environment variable
时的结果
application.properties
huge=huge
当我在foo.html
environment variable
<script type="text/javascript">
hugeOfHtml = "[[${@environment.getProperty('huge')}]]";
</script>
结果在chrome F12
<script type="text/javascript">
hugeOfHtml = "huge";
</script>
与我在 foo.js
environment variable
相比
hugeOfJs = "[[${@environment.getProperty('huge')}]]";
结果在chrome F12
hugeOfJs = "[[${@environment.getProperty('huge')}]]";
如何在 .js
文件中获取 environment variable
而不是 .html
?
我假设您正在使用 spring boot 2 和 thymeleaf 3。外部化的 js 文件很可能位于 src/resources/static/
路径中,如果是这样,thymeleaf 将不会处理它。现在假设你将它移动到另一个目录 src/resources/templates/js/
,thymeleaf 应该处理外部化的 js 文件并给出你所期望的结果。
但是,鉴于外部化的 js 文件不再是静态资源,您将不得不在控制器中公开一个 get 方法来加载外部化的 js 文件。该方法将如下所示;
@Controller
public class FooController {
@GetMapping("/js/foo.js")
public String loadFooDotJs(){
return "/js/foo.js";
}
}
上述方法将加载外部化的 js 文件,使用 thymeleaf 对其进行处理,并 return 进行相应处理。
如果您只使用 spring;不是 spring 引导,我相信您还必须创建模板解析器和模板引擎。 Here is a good article by Baeldung.