Thymeleaf基本语法(二)

1、th:text

  • 可以对表达式或变量进行计算求值;
  • 可以使用“+”进行文本拼接;
  • 可以获取后端传过来的request作用域中的数据(包括Model、ModelAndView作用域)
  • 如果文本中包含有HTML标签,不会对其进行解析。

2、th:utext

此标签与th:text标签功能几乎一样,唯一不同就是,如果文本中包含有HTML标签,会对其进行解析,并响应到客户端。

3、#{...}

#{}表达式的作用是从外部文件获取值,通常是key/value形式的property文件。它的强大在于通过简单的操作,就可以处理应用程序国际化的问题。(通常搭配着th:text使用)

4、${...}

它的作用是从thymeleaf上下文获取指定变量的值

${}的预定义变量

thymeleaf提供了一些预定义变量param、session和application,使用${}可以方便地获取这些变量的值:

  • 获取当前名称为x的请求参数:${param.x}
  • 获取当前session中名称为x的属性:${session.x}
  • 获取当前ServletContext中名称为x的属性:${application.x}

可见,如果变量是一个对象的话,${}还可以通过点语法获取对象的属性值。如果要获取的属性是一个私有字段,则它必须提供一个get方法,否则属性值获取失败。

这是标题

示例使用了Thymeleaf模板的变量表达式${...}用来动态获取P标签中的内容,如果当前程序没有启动或者当前上下文中不存在title变量,该片段会显示标签默认值“这是标题”;如果当前上下文中存在title变量并且程序已经启动,当前P标签中的默认文本内容将会被title变量的值所替换,从而达到模板引擎页面数据动态替换的效果

同时,Thymeleaf为变量所在域提供了一些内置对象,具体如下所示

# ctx:上下文对象
# vars:上下文变量
# locale:上下文区域设置
# request:(仅限Web Context)HttpServletRequest对象
# response:(仅限Web Context)HttpServletResponse对象
# session:(仅限Web Context)HttpSession对象
# servletContext:(仅限Web Context)ServletContext对象

结合上述内置对象的说明,假设要在Thymeleaf模板引擎页面中动态获取当前国家信息,可以使用#locale内置对象,示例代码如下 

The locale country is: US

上述代码中,使用th:text="${#locale.country}"动态获取当前用户所在国家信息,其中标签内默认内容为US(美国),程序启动后通过浏览器查看当前页面时,Thymeleaf会通过浏览器语言设置来识
当前用户所在国家信息,从而实现动态替换

5、*{...}

星号表达式与上文中的$表达式功能大致相同,二者最大的区别是:星号语法对选定对象而不是整个上下文的表达式求值。也就是说,只要没有选中的对象,美元和星号的语法就完全一样。

eg:

  

Name: Sebastian.

Surname: Pepper.

Nationality: Saturn.

这完全等同于:

Name: Sebastian.

Surname: Pepper.

Nationality: Saturn.

当然,美元和星号语法可以混合使用。

6、@{...} 

 @{}这个是thymeleaf中的链接,与th:src或th:href一起使用


view


view


view

 注意:

该表达也可以与其他表达式结合使用:

eg:

view
view

7、片段表达式 ~{...}

片段表达式~{...}用来标记一个片段模板,并根据需要移动或传递给其他模板。其中,最常见的用法是使用th:insertth:replace属性插入片段,示例代码如下:

上述代码中,使用th:insert属性将title片段模板引用到该标签中。thymeleafDemo为模板名称,Thymeleaf会自动查找“/resources/templates/”目录下的thymeleafDemo模板,title为片段名称。

8、附加文本与文字替换

8.1、附加文本

文本,无论是文字还是评估变量或消息表达式的结果,都可以使用+运算符轻松附加:

 8.2、文字替换

文字替换允许轻松格式化包含来自变量的值的字符串,而无需在文字后面附加'...' + '...'.

这些替换必须用竖线 ( |) 包围,例如:

 这相当于:

文字替换可以与其他类型的表达式组合:

在文字替换中只允许使用变量/消息表达式 ( ${...}*{...}, )。没有其他文字 ( )、布尔/数字标记、条件表达式等。#{...}|...|'...'

9、算术运算 

还可以使用一些算术运算:+-*和。/%

请注意,其中一些运算符存在文本别名:( div/mod%)。

10、比较器与等式

 表达式中的值可以与><>=and<=符号进行比较,==and!=运算符可用于检查是否相等(或不相等)。请注意,XML 规定<和>符号不能用于比较符号,我们应该使用<>进行替换。

其它比较符号的别名如下:

gt (>),lt (<),ge (>=),le (<=), not (!),eq (==),neq/ne (!=).

11、条件表达式 

语法:条件?then : else


  ...

 条件表达式可以是变量 ( ${...}*{...})、消息 ( #{...})、URL ( @{...}) 或文字 ( '...')。

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


  ...

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


  ...

你可能感兴趣的:(ThymeLeaf,Thymeleaf)