thymeleaf学习(一)

标准表达式语法

  • ${...}:变量表达式
  • *{...}:选择表达式
  • \#{...}:消息(i18n)表达式
  • @{...}:URL表达式
  • ~{...}:片段表达式

变量表达式

将Thymeleaf与Spring集成-在上下文变量(在Spring行话中也称为 Spring jargon)上执行

OGNL表达式长这样 :

${session.user.name}

他们可以作为属性的值,像这样:

以上代码和这样是相等的(OGNL和SpEL语言)

((Book)context.getVariable("book")).getAuthor().getName()

我们可以使用迭代访问变量

  • $ {books}从上下文中选择称为books的变量,并将其评估为可迭代的变量,以在th:each循环中使用

    选择表达式

    选择表达式和变量表达式类似,而选择表达式只能在先前选择的对象上执行,不能全局执行
    选择表达式长这样:

    *{customer.name}

    它们作用的对象由th:object属性指定

    ... ... ...

    等效于:

    {
      // th:object="${book}"
      final Book selection = (Book) context.getVariable("book");
      // th:text="*{title}"
      output(selection.getTitle());
    }

    消息表达式

    经常称为text externalization, internationalization或者 i18n
    消息表达式允许我们从.properties文件中检索特定于语言环境的消息,通过键引用它们,并可选地应用一组参数。
    他们长这样:

    #{main.title}
    #{message.entrycreated(${entryId})}

    在模板中长这样:

    
      ...
      
      ...
    
    ... ...

    如果希望消息关键字由上下文变量的值确定,或者希望将变量指定为参数。
    可以在消息表达式内使用变量表达式,像这样:

    #{${config.adminWelcomeKey}(${session.user.name})}

    链接表达式

    链接表达式用于构建URL并向其添加有用的上下文和会话信息(此过程通常称为URL重写)
    一个网页应用部署在你的web服务器的myapp上下文,表达式长这样:

    ...

    他会被转换为:

    ...

    如果我们需要保留会话且未启用Cookie(或服务器尚不知道),请执行以下操作

    ...

    URL还可以加入变量

    ...

    他实际是会被转换为这样的:

    
    ...

    URL表达式可以是相对的,在这种情况下,没有应用程序上下文将作为URL的前缀:

    ...

    也可以是服务器的相对(同样也没有URL前缀)

    ...

    相对协议(与绝对URL相同,但浏览器将使用与所显示页面相同的HTTP或HTTPS协议):

    ...

    url表达式也当然可以是绝对的

    ...

    片段表达式

    片段表达式是表示标记片段并在模板中使用它们的简单方法。
    最常见的用途是使用th:insert或th:replace插入片段:

    ...

    可以在任何地方使用,像变量一样

    字面量和方法

    • 字面量:

      * 文本字面量:'one text', 'Another one!'
      * 数字字面量:0, 34, 3.0, 12.3,
      * 布尔字面量:true,false
      * 空关字面量:null
    • 文本操作:

      *   String concatenation: +
      *   Literal substitutions: |The name is ${name}|
    • 数学操作:

      *   Binary operators: +, -, *, /, %
      *   Minus sign (unary operator): -
    • 布尔操作符:

      *   Binary operators: and, or
      *   Boolean negation (unary operator): !, not
    • 比较和相等:

      *   Comparators: >, <, >=, <= (gt, lt, ge, le)
      *   Equality operators: ==, != (eq, ne)
    • 条件操作:

      *   If-then: (if) ? (then)
      *   If-then-else: (if) ? (then) : (else)
      *   Default: (value) ?: (defaultvalue)
      

    表达式预处理

    预处理看起来像这样

    #{selection.__${sel.code}__}

    我们看到的是一个表达式${sel.code},他将被预先执行,然后将其结果(假如是ALL)selection.ALL返回

    一些基本属性

    th:text替换标签的文本

    Welcome everyone!

    th:each和Java的forEach相同

  • En las Orillas del Sar
  • Thymeleaf模仿的特定的XHTML和HTML5属性th:action, th:value, th:href

    你可能感兴趣的:(thymeleaf学习(一))