Java 使用Thymeleaf(Spring)将代码从变量添加到html头标记中

Java 使用Thymeleaf(Spring)将代码从变量添加到html头标记中,java,spring,thymeleaf,Java,Spring,Thymeleaf,我有一个用Spring Boot和Thymeleaf编写的Web应用程序。 我需要在HTML头标记中动态添加一个自定义“代码”。此自定义“代码”存储在Spring模型对象的变量中。我尝试了很多方法,但似乎都不管用。以下是我测试的所有方法: <head> #1 [[${headCode}]] #2 <div th:text="${headCode}"></div> #3 <span th:text="${headCode}"><

我有一个用Spring Boot和Thymeleaf编写的Web应用程序。 我需要在HTML头标记中动态添加一个自定义“代码”。此自定义“代码”存储在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>

#1[${headCode}]]
#2 
#3 
#4 
#5 
#6 
#7 
例如: 假设我们有一个Spring控制器,它在模型变量“headCode”中放入一个特定的代码:

@GetMapping
公共字符串getPage(模型){
字符串头代码=”
console.log('1');
console.log('2');
console.log('3');
"
model.addAttribute(“headCode”,headCode);
返回“页面”;
}
在呈现的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>

[标题内容]
console.log('1');
console.log('2');
console.log('3');
[正文内容]

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

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

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

您在HTML代码中的第二次尝试是正确的,问题应该与您在控制器中传递给视图的字符串有关。 您应该检查
您还可以从他们的存储库下载一个工作示例。

给出的示例代码不是用java语言编写的,只是模板引擎的输出。现在还不清楚,目的是要设计一个智能教学系统来教授Thymeleaf如何在实际例子中工作,还是要创建一个能够将数据库内容转换为HTML页面的人工代理。我不明白你的意思。我不知道如何动态地将代码/脚本/标记放入html页面的head标记中,该标记来自Spring模型对象中的变量。我所有的测试结果都是失败的。那么呢?我如何处理片段中的变量?曼努埃尔·罗德里格斯(Manuel Rodriguez)提出了一个观点。首先,
字符串头代码
不会编译,它是一个无效的字符串,如果您想有多行,请使用串联。这在概念上也是错误的,因为html代码应该放在模板中,与资源文件中的脚本和css一样,请查看Thymeleaf文档。为模型使用字符串或Java数据类型。
<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>
<header th:fragment="contentheader(title)" th:assert="${!#strings.isEmpty(title)}">...</header>
@GetMapping(VIEW_NAME)
  public ModelAndView viewPage() {
    ModelAndView modelAndView = new ModelAndView(VIEW_NAME);
    modelAndView.addObject("yourDto", new YourDto());
    return modelAndView;
  }