zoukankan      html  css  js  c++  java
  • Thymeleaf 标准表达式语法

    变量表达式${ }

    在控制器中往页面传递几个变量:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Controller
    public class IndexController {
     
    @RequestMapping(value="/index",method=RequestMethod.GET)
    public String index(HttpSession session, Model model){
    User user = new User();
    user.setName("KangKang");
    user.setAge(25);
    user.setHabbit(new String[]{"football","basketball","swim"});
    session.setAttribute("user", user);
    model.addAttribute(user);
    return "index";
    }
    }

    在页面中使用变量表达式${}来获取它们:

    1
    2
    3
    4
    <p th:utext="${user.name}"></p>
    <p th:utext="${session.user.getName()}"></p>
    <p th:utext="${session.user.upcaseName()}"></p>
    <p th:utext="${user.habbit[0]}"></p>

    可以看到变量表达式不但可以获取变量的属性值,甚至还可以访问变量的方法(getName()和upcaseName())。session代表HttpSession对象。

    选择表达式*{ }

    选择表达式的使用方法如下所示:

    1
    2
    3
    4
    5
    <div th:object="${session.user}">
    <p>name: <span th:text="*{name}"></span></p>
    <p>age: <span th:text="*{age}"></span></p>
    <p>habbit: <span th:text="*{habbit[0]}"></span></p>
    </div>

    *{}代指th:object所指定的对象,即${session.user}

    URL链接表达式@{ }

    URL链接表达式会给URL自动添加上下文的名字。比如:

    1
    <a th:href="@{/main}">main</a>

    解析后的href值为http://localhost:8080/thymeleaf/main

    当需要在URL中传递参数时,比如这样http://localhost:8080/thymeleaf/main?name=KangKang,可以如下操作:

    1
    <a th:href="@{/main(name=${session.user.name})}">main</a>

    传递多个参数:

    1
    <a th:href="@{/main(name=${session.user.name},age=${session.user.age})}">main</a>

    路径变量的写法:

    1
    <a th:href="@{/main/{name}(name=${session.user.name})}">main</a>

    后端接受路径变量:

    1
    2
    3
    4
    5
    @RequestMapping(value="main/{name}")
    public String main(@PathVariable String name){
    System.out.println("pathValue: "+name);
    return "main";
    }

    字面量

    文本常量

    文本常量指的是单引号之间的字符串,比如:

    1
    <p th:text="'Welcome KangKang'"></p>

    数字常量

    1
    2
    <p>The year is <span th:text="2017">1492</span>.</p>
    <p>In two years, it will be <span th:text="2017 + 2">1494</span>.</p>

    Boolean类型的常量

    Boolean类型的常量就是true和false。例如:

    1
    <div th:if="${user.isAdmin()} == false"> ...

    Null常量

    1
    <div th:if="${variable.something} == null"> ...

    字面量替换

    除了使用'...' + ${}来连接字面量和变量外,还可以使用|...|来代替,比如:

    1
    <p th:utext="|hello,${session.user.name},your age is ${session.user.age}|"></p>

    等价于:

    1
    <p th:utext="'hello,'+${session.user.name}+',your age is '+${session.user.age}"></p>

    | ... |字面替换中只允许有变量表达式${...}

    条件表达式

    条件表达式实际上就是三目运算符。比如:

    1
    2
    3
    <tr th:class="${row.even}? 'even' : 'odd'">
    ...
    </tr>

    条件表达式也可以使用括号嵌套:

    1
    2
    3
    <tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
    ...
    </tr>

    else表达式也可以省略,在这种情况下,如果条件为false,则返回空值:

    1
    2
    3
    <tr th:class="${row.even}? 'even'">
    ...
    </tr>

    默认表达式

    默认表达式是一种特殊类型的条件值,不带then部分。比如:

    1
    <p th:utext="${session.user.sex} ?: 'sex is unknown'"></p>

    表示,当${session.user.sex}null时,值为sex is unknown,否则为表达式的值。这就好像为表达式指定了一个默认值一样。其等价于:

    1
    <p th:utext="${session.user.sex != null} ? ${session.user.sex}: 'sex is unknown'"></p>

    更详细的内容可参考官方文档:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax

  • 相关阅读:
    swift 第十四课 可视化view: @IBDesignable 、@IBInspectable
    swift 第十三课 GCD 的介绍和使用
    swift 第十二课 as 的使用方法
    swift 第十一课 结构体定义model类
    swift 第十课 cocopod 网络请求 Alamofire
    swift 第九课 用tableview 做一个下拉菜单Menu
    swift 第八课 CollectView的 添加 footerView 、headerView
    swift 第七课 xib 约束的优先级
    swift 第六课 scrollview xib 的使用
    swift 第五课 定义model类 和 导航栏隐藏返回标题
  • 原文地址:https://www.cnblogs.com/xiaohu1218/p/9634137.html
Copyright © 2011-2022 走看看