• 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=提交

    测试结果:

    每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
  • 相关阅读:
    一些Docker 操作集合
    与Flash 中国特供版斗智斗勇
    Linux 电子数据取证入门
    emu8086实现两位数加法运算
    emu8086实现两位数乘法运算
    5种三栏布局的实现方式
    通用事件绑定方法
    随机产生两个数值之间的某个值
    查询字符串中某个字符出现的位置数组
    根据对象属性的属性值,对对象进行排序
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13665723.html
Copyright © 2020-2023  润新知