Thymeleaf:运算符($、*、#、@)&国际化

1、运算符

(1)$

在controller层写入数据:

@Controller
public class TestController {
    @RequestMapping("/test")
    public String hello(Model model){
        Student student=new Student();
        student.setSname("zhai");
        student.setSnum("201716161");
        model.addAttribute("student", student);
        return "test";
    }
}

在html页面取出数据:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
   <h3 th:text="${student.sname}"></h3>
   <h3>[[${student.sname}]]</h3>
</body>
</html>

(2)*

在controller层写入数据:

@Controller
public class TestController {
    @RequestMapping("/test")
    public String hello(Model model){
        Student student=new Student();
        student.setSname("zhai");
        student.setSnum("201716161");
        model.addAttribute("student", student);
        return "test";
    }
}

在HTML页面取出数据:

<body>
   <h3 th:object="${student}">[[*{sname}]],[[*{snum}]]</h3>
</body>

测试结果:

(3)#:获取资源文件中的数据

获取不到数据的时候显示key的名称:

<body>
   <h3>[[#{student.sname}]]</h3>
</body>

国际化:根据不同的语言和地区显示对应的地区的语言文字,i18n(其来源是英文单词internationalizatior的首末字符i和n,18为中间的字符数)

注意:国际化默认资源文件名: message.properties。若自定义资源文件名,需要在application.yml文件配置

例如:下面的配置就是用到的messages.properties文件中的国际化数据

spring:
  messages:
    basename: messages

目录结构如下:

 在页面中用#取出国际化相关的数据:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>国际化</title>
</head>
<body>
<form method="post">
    <p>
        <input type="text" name="username" th:placeholder="#{login.username}">
    </p>
    <p>
        <input type="password" name="password" th:placeholder="#{login.password}">
    </p>
<input type="submit" th:value="#{login.submit}"/></p>
</form>
</body>
</html>

测试结果:

切换为英文:即指定英文国际化的配置文件

spring:
  messages:
    basename: message_en_US

测试结果:

 (4)@:用来指明路径

用@指出路径:

<body>
   <h3>[[#{student.sname}]]</h3>
   <a th:href="@{i18n}">登录</a>
</body>

在controller中定义路径及要跳转的页面:

    @RequestMapping("/i18n")
    public String i18n(){
        return "i18n";
    }

2、国际化

(1)如果出现乱码,可以更改浏览器的语言设置:

(2)默认使用的是messages.properties配置文件中的数据

(3)修改语言的优先级使用的配置文件是不同的

 此时调用的是英文的配置文件:

 如果将第一语言设置的是配置文件中没有配置国际化的语言,那么就会使用默认的配置,即messages.properties中的配置:

 显示的是messages.properties中的配置:

login.username=翟
login.password=123
login.submit=提交

测试结果:

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
原文地址:https://www.cnblogs.com/zhai1997/p/13665723.html