SpringBoot + Thymeleaf:如何根据Locale设置页面的lang属性
SpringBoot + Thymeleaf:如何根据Locale设置页面的lang属性
嘿,我完全懂你碰到的这个问题——直接在原生lang属性里写${locale.language}或者${#locale.language}确实不会生效,这是因为Thymeleaf不会解析原生HTML属性里的表达式,得用它专属的属性语法来触发动态赋值才行!
给你两种可行的正确写法:
方法一:使用Thymeleaf专属的th:lang属性
这是最直观的方式,Thymeleaf专门提供了th:lang来对应原生的lang属性,直接把Locale值绑定上去就行:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:lang="${#locale.language}">
方法二:通过th:attr动态设置原生属性
如果习惯用原生属性的写法,也可以用th:attr来指定要设置的lang属性,语法是属性名=${表达式}:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:attr="lang=${#locale.language}">
另外补充个小技巧:如果你需要设置完整的语言地区标识(比如zh-CN、en-US这种格式),可以用${#locale.toString()}来替代${#locale.language},这样会输出包含语言和地区的完整Locale字符串。
之前的写法失效的核心原因就是:原生HTML属性里的表达式不会被Thymeleaf的模板引擎解析,必须加上th:前缀的属性,引擎才会识别并处理里面的变量表达式,把Spring上下文里的Locale值渲染到页面上。
备注:内容来源于stack exchange,提问作者Nunyet Calçada
相关产品推荐
相关产品推荐

