在 Java Spring Thymeleaf 中将变量呈现为 HTML

Posted

技术标签:

【中文标题】在 Java Spring Thymeleaf 中将变量呈现为 HTML【英文标题】:Render a variable as HTML in Java Spring Thymeleaf 【发布时间】:2020-10-30 08:49:40 【问题描述】:

在我的 .java 文件中,我有

@RequestMapping(value = "/page1", method = RequestMethod.GET)
public String callback(@RequestParam(name = "token") String token, Model model)
    //do something with token
    //result variable is either 
    //"<p style=\"color:red;font-size:20px\"><strong>fail</strong></p>" 
    //or 
    //"<p style=\"color:green;font-size:20px\"><strong>pass</strong></p>"
    model.addAttribute("result", result);
    return "page1";

在我的 page1.html 文件中:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Page1</title>
</head>
<body>
<p th:text="'here is the result: ' + $result"></p>
</body>
</html>

现在,我的 page1 显示:

here is the result: <p style="color:green;font-size:20px"><strong>pass</strong></p>

是否可以将我的结果变量呈现为 html,以便我的 page1 显示一个大的绿色通道?除了 th:text + $var 还有其他格式选项吗?我使用的是 spring boot 和 thymeleaf。我试图不为此使用 javascript

类似 this 的东西,但用于 java

【问题讨论】:

【参考方案1】:

这是控制器级别的表示和语义的不良混合,以及 HTML 级别的内容和样式的不良混合。相反,请为 result 使用布尔属性并使用 th:if 或类似属性来切换模板中的 HTML 内容,并避免使用内联样式以支持 class="success" 之类的内容。

【讨论】:

【参考方案2】:

使用这个:

th:utext="'here is the result: ' + $result"

【讨论】:

以上是关于在 Java Spring Thymeleaf 中将变量呈现为 HTML的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中使用模板引擎Thymeleaf

Spring Boot + Thymeleaf 错误 java.lang.ClassNotFoundException: org.thymeleaf.dom.Attribute

Thymeleaf (Java Spring):无法让 mvc.uri 工作

使用 Spring + Thymeleaf 时出现 java.lang.***Error

如何在 Spring Thymeleaf 中提交表格数据

登录 Spring 安全重定向到错误 Thymeleaf 和基于 Java 的配置