gpt4 book ai didi

java - 使用 Thymeleaf (Spring) 将代码从变量添加到 html head 标签中

转载 作者:行者123 更新时间:2023-12-01 23:44:16 24 4
gpt4 key购买 nike

我有一个用 Spring Boot 和 Thymeleaf 编写的 Web 应用程序。我需要在 HTML head 标签内动态添加自定义“代码”。该自定义“代码”存储在 Spring 模型对象的变量内。我尝试了很多方法,但似乎都不起作用。这些是我测试过的所有方法:

<head>
#1 [[${headCode}]]
#2 <div th:text="${headCode}"></div>
#3 <span th:text="${headCode}"></span>
#4 <div th:html="${headCode}"></div>
#5 <div th:text="${headCode}" th:remove="tag"></div>
#6 <div th:html="${headCode}" th:remove="tag"></div>
#7 <span th:text="${headCode}" th:remove="tag"></span>
</head>

示例:假设我们有一个 Spring Controller ,它将特定的代码放入模型变量“headCode”中:

@GetMapping
public String getPage(Model model){
String headCode = "<script>
console.log('1');
</script>
<script>
console.log('2');
</script>
<script>
console.log('3');
</script>"
model.addAttribute("headCode", headCode);
return "page";
}

我希望在渲染的 html 页面中,有这样的内容:

<html>
<head>
[head content]
<script>
console.log('1');
</script>
<script>
console.log('2');
</script>
<script>
console.log('3');
</script>
</head>
<body>
[body content]
</body>
</html>

我没有固定的代码,我无法将其硬编码到 head 部分中,所以我需要找出一种不同的方法将其插入到 head 部分中。例如,这个自定义代码可能是 Facebook Pixel,我每次需要时都必须能够更改它。有什么想法吗?

最佳答案

也许您应该尝试使用一个片段来替换整个 header 元素,并在片段签名中传递您需要的任何变量。

在官方文档中,有一个这样的例子:

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#parameterizable-fragment-signatures

<header th:fragment="contentheader(title)" th:assert="${!#strings.isEmpty(title)}">...</header>

希望这有帮助!

以下是如何使用来自 Controller 的数据设置端点的工作示例:

@GetMapping(VIEW_NAME)
public ModelAndView viewPage() {
ModelAndView modelAndView = new ModelAndView(VIEW_NAME);
modelAndView.addObject("yourDto", new YourDto());
return modelAndView;
}

您在 HTML 代码中的第二次尝试是正确的,问题应该与您传递给 Controller ​​中 View 的字符串有关。您应该检查 Thymeleaf Docs 的条件部分。您还可以下载他们的存储库的工作示例。

关于java - 使用 Thymeleaf (Spring) 将代码从变量添加到 html head 标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com