Thymeleaf读取html字符串自动转义问题

为实现关键字高亮显示,使用THymeleaf时需将th:text替换为th:utext以避免HTML标签被转义。本文介绍如何正确设置以达到预期的高亮效果。

项目中因为要做高亮显示,所以后台传来的数据,对于关键字会用<em>标签做高亮显示

但是使用 th:text输出时候会自动进行转义,导致直接输出标签文本



解决办法:

把 th:text 换成 th:utext

原来:th:text="${law.id}"

现在:th:utext="${law.id}"

完毕之后已经可以正常显示高亮效果


### Thymeleaf 中消息表达式的使用方法 Thymeleaf 是一种强大的服务器端 Java 模板引擎,支持 HTML、XML 和其他格式的模板处理。其中的消息表达式(`#{...}`)主要用于实现国际化功能,允许开发者通过键值对的方式加载资源文件中的文本内容。 #### 消息表达式的语法 消息表达式的标准形式为 `#{key}` 或者带有参数的形式 `#{key(arg0,arg1,...)}`[^2]。它可以从配置好的资源文件中读取对应的值并将其渲染到页面上。这种机制非常适合多语言网站开发场景下的动态文本显示需求。 #### 配置步骤 为了使消息表达式正常工作,通常需要完成以下几个方面的设置: 1. **引入依赖** 确保项目已经包含了 Thymeleaf 的相关 Maven 或 Gradle 依赖项。 2. **创建资源文件** 在项目的 `src/main/resources/` 路径下建立名为 `messages.properties` 的属性文件,并根据实际的语言环境添加更多版本,比如 `messages_en_US.properties`, `messages_zh_CN.properties` 等。这些文件内部存储着 key-value 形式的字符串数据[^3]。 3. **启用 Spring Boot 自动配置** 如果是在基于 Spring Boot 的环境中,则无需额外编写 Bean 定义来初始化 MessageSource;框架会自动扫描 classpath 下面所有的 .properties 文件作为候选源材料之一。 4. **HTML 页面调用** 利用 `<tag th:text="#{messageKey}">Default Text</tag>` 这样的方式,在前端视图层嵌套进所需展示的信息条目名即可。 #### 示例代码 下面给出一段具体的例子说明如何运用消息表达式达到预期效果: ```html <!DOCTYPE html> <html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>Thymeleaf Demo</title> </head> <body> <h1 th:text="#{welcome.title}"></h1> <p th:if="${not #strings.isEmpty(message)}" th:text="#{greeting(${message})}"> Hello, world! </p> <!-- 更复杂的条件判断 --> <div th:switch="${user.language}"> <p th:case="'en'">#{"hello.inEnglish"}</p> <p th:case="'es'">#{"hello.inSpanish"}</p> <p th:case="*">#{"hello.defaultLanguage"}</p> </div> </body> </html> ``` 在此基础上还需要准备相应的 messages*.properties 文件内容如下所示: ``` welcome.title=欢迎来到我们的网站 greeting=你好,{0} hello.inEnglish=Hello hello.inSpanish=hola hello.defaultLanguage=Bonjour ``` 以上即完成了基本的消息传递流程演示[^5]。 #### 注意事项 当遇到复杂逻辑或者特殊字符转义问题时,请参照官方文档进一步学习调整策略[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值