本文章将介绍Thymeleaf标准表达式语法中的概念。

    • 学习如何在Thymeleaf模板中显示对象(Bean)的属性值。
    • 已经将Product类的bean已经设置为名称为product的上下文模型。
    • 为这些IntegerDate属性添加一些格式,学习使用字符串相连接输出。
    • 最后,修改模板以获得一个合理的静态原型(例如,通过一些原型数据替换并显示结果)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创建项目的过程,这里将只介绍如何使用Thymeleaf标准表达式和标签。

    这里创建一个Maven Web项目: thymeleaf-tutorials ,其目录结构如下所示 -

    1523793446376702.png

    Bean类的实现:Product.java -

    1. package com.e-learn.spring.bean;
    2.  
    3. import java.util.Date;
    4.  
    5. public class Product {
    6.  
    7. private String description;
    8. private Integer price;
    9. private Date availableFrom;
    10.  
    11. public Product(final String description, final Integer price, final Date availableFrom) {
    12. this.description = description;
    13. this.price = price;
    14. this.availableFrom = availableFrom;
    15. }
    16.  
    17. public Date getAvailableFrom() {
    18. return this.availableFrom;
    19. }
    20.  
    21. public void setAvailableFrom(final Date availableFrom) {
    22. this.availableFrom = availableFrom;
    23. }
    24.  
    25. public String getDescription() {
    26. return this.description;
    27. }
    28.  
    29. public void setDescription(final String description) {
    30. this.description = description;
    31. }
    32.  
    33. public Integer getPrice() {
    34. return this.price;
    35. }
    36.  
    37. public void setPrice(final Integer price) {
    38. this.price = price;
    39. }
    40.  
    41. }

    控制器类的实现:MyController.java -

    1. package com.e-learn.spring.controller;
    2.  
    3. import java.text.ParseException;
    4. import java.text.SimpleDateFormat;
    5. import java.util.Date;
    6.  
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.ui.Model;
    9. import org.springframework.web.bind.annotation.GetMapping;
    10. import com.e-learn.spring.bean.Product;
    11.  
    12. @Controller
    13. public class MyController {
    14.  
    15. @GetMapping("/")
    16. public String index(Model model) throws ParseException {
    17. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    18. Product product = new Product("花生油", 129, sdf.parse("2018-02-18"));
    19. model.addAttribute("product", product);
    20. return "index";
    21. }
    22. }

    模板文件的实现:/webapp/WEB-INFO/views/index.html -

    1. <html xmlns:th="http://www.thymeleaf.org">
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    5. <link rel="stylesheet" th:href="@{/css/main.css}" />
    6. <title>SpringMVC5+Thymeleaf示例</title>
    7. </head>
    8. <body>
    9. <h2>Spring MVC5 + Thymeleaf 字符串连接</h2>
    10.  
    11. <h2>产品信息</h2>
    12. <dl>
    13. <dt>产品名称:</dt>
    14. <dd th:text="${product.description}">葡萄干</dd>
    15.  
    16. <dt>产品价格:</dt>
    17. <dd th:text="${'¥' + #numbers.formatDecimal(product.price, 1, 2)}">350</dd>
    18.  
    19. <dt>产品有效时间:</dt>
    20. <dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">28-Jun-2018</dd>
    21. </dl>
    22. </body>
    23. </html>

    运行上面项目,在浏览器中显示效果如下 -

    1523793449168099.png