博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5分钟学会 Thymeleaf 的基本使用
阅读量:6158 次
发布时间:2019-06-21

本文共 2944 字,大约阅读时间需要 9 分钟。

hot3.png

英文水平较差,斗胆翻译,希望对大家有用,欢迎批评指正。

本指南将指导您了解一些最重要的概念,以便用标准或 Spring 的方式去编写 Thymeleaf 模板。这并不是个完整的教程,但会给您比较全面的 Thymeleaf 使用体验。

1.Standard dialects?

待翻译

2.标准表达式

大多数的 Thymeleaf 属性允许设置值或使用表达式。我们称之为标准表达式方言。五种类型的表达式:

${...} : 变量表达式

*{...} : 选择表达式
#{...} : 国际化 (i18n) 表达式
@{...} : 链接 (URL) 表达式
~{...} : 片段表达式

2.1.变量表达式

变量表达式是 OGNL 表达式或 Spring EL,如果你把 Thymeleaf 集成到 Spring 中,执行上下文中的变量,在Spring的行话中叫做模型属性,他看起来像这样:

${session.user.name}

如果你要找的属性值或它的部分,具体取决于属性:

上面的表达式相当于(在OGNL和SpringEL)的:

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

在实际场景中我们不但要找到变量表达式和输出,还需要更复杂的处理,如条件,迭代...

  • 这里 ${books} 从上下文中选择名为books的变量,并将其中的每个值使用 th:each 进行循环。

    2.2.选择表达式

    选择表达式就像变量表达式,除了它们将在先前选择的对象而不是整个上下文变量上执行。 他们看起来像这样:

    *{customer.name}

    对象来自 th:object 中的属性

    ...
    ... ...

    就如同:

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

    2.3.国际化 (i18n) 表达式

    消息表达式(通常称为文本外部化,国际化或i18n)允许我们从外部源(.properties文件)中检索特定于区域的消息,通过键引用它们(可选地)应用一组参数。

    在Spring应用程序中,这将自动与Spring的MessageSource机制集成。

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

    您可以在以下模板中找到它们:

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

    注意,如果希望消息键由上下文变量的值确定,或者要将变量指定为参数,则可以在消息表达式中使用变量表达式:

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

    2.4.链接 (URL) 表达式

    链接表达式旨在构建URL并向他们添加有用的上下文和会话信息(通常称为URL重写的过程)。

    因此,对于部署在Web服务器/ myapp上下文中的Web应用程序,可以使用以下表达式:

    ...

    可以转换成这样的东西:

    ...

    或者即使这样,如果我们需要保持会话和cookie未启用(或服务器还不知道):

    ...

    网址也可以参数:

    ...

    导致这样的事情:

    ...

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

    ...

    也是服务器相对(再次,没有应用程序上下文作为前缀):

    ...

    和协议相关(就像绝对URL一样,但浏览器将使用正在显示的页面中使用的相同的HTTP或HTTPS协议):

    ...

    当然,链接表达式可以是绝对的:

    ...

    但等待,绝对(或协议相对)URL ...什么是Thymeleaf链接表达式添加? 容易:由响应过滤器定义的URL重写的可能性:在基于Servlet的Web应用程序中,对于输出的每个URL(上下文相对,相对,绝对...)Thymeleaf将始终调用HttpServletResponse.encodeUrl(...)机制 在显示URL之前。 这意味着过滤器可以通过包装HttpServletResponse对象(常用机制)来为应用程序执行定制的URL重写。

    2.5.片段表达式

    片段表达式是表示标记片段的简单方法,并将其移动到模板周围。 由于这些表达式,片段可以被复制,传递给其他模板是参数,等等。

    最常见的用法是使用  th:insert 或 th:replace :

    ...

    但它们可以在任何地方使用,就像任何其他变量一样:

    片段表达式可以有参数:

    2.6.字面值和操作

    有很多类型的文字和操作可用:

    • Literals:
      • Text literals: 'one text''Another one!',…
      • Number literals: 0343.012.3,…
      • Boolean literals: truefalse
      • Null literal: null
      • Literal tokens: onesometextmain,…
    • Text operations:
      • String concatenation: +
      • Literal substitutions: |The name is ${name}|
    • Arithmetic operations:
      • Binary operators: +-*/%
      • Minus sign (unary operator): -
    • Boolean operations:
      • Binary operators: andor
      • Boolean negation (unary operator): !not
    • Comparisons and equality:
      • Comparators: ><>=<= (gtltgele)
      • Equality operators: ==!= (eqne)
    • Conditional operators:
      • If-then: (if) ? (then)
      • If-then-else: (if) ? (then) : (else)
      • Default: (value) ?: (defaultvalue)

    2.7.表达式预处理

    待翻译

    3.一些基本属性

    待翻译

    4.想了解更多?

    Then the  tutorial is what you’re looking for!

    ----------------------------------------------------------------------------

    未完,待续。。。

    官方原文:

    转载于:https://my.oschina.net/u/1383742/blog/983296

    你可能感兴趣的文章
    五、字典
    查看>>
    前端js之JavaScript
    查看>>
    Log4J日志配置详解
    查看>>
    实验7 BindService模拟通信
    查看>>
    scanf
    查看>>
    Socket编程注意接收缓冲区大小
    查看>>
    SpringMVC初写(五)拦截器
    查看>>
    检测oracle数据库坏块的方法
    查看>>
    SQL server 安装教程
    查看>>
    Linux下ftp和ssh详解
    查看>>
    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
    查看>>
    js时间和时间戳之间如何转换(汇总)
    查看>>
    js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
    查看>>
    java中string和int的相互转换
    查看>>
    P1666 前缀单词
    查看>>
    HTML.2文本
    查看>>
    Ubuntu unity安装Indicator-Multiload
    查看>>
    解决Eclipse中新建jsp文件ISO8859-1 编码问题
    查看>>
    7.对象创建型模式-总结
    查看>>
    【论文阅读】Classification of breast cancer histology images using transfer learning
    查看>>