14.1 订单列表
让我们从创建订单列表页面开始,/WEB-INF/templates/order/list.html:
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><title>Good Thymes Virtual Grocery</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" media="all"href="../../../css/gtvg.css" th:href="@{/css/gtvg.css}" /></head><body><h1>Order list</h1><table><tr><th>DATE</th><th>CUSTOMER</th><th>TOTAL</th><th></th></tr><tr th:each="o : ${orders}" th:class="${oStat.odd}? 'odd'"><td th:text="${#calendars.format(o.date,'dd/MMM/yyyy')}">13 jan 2011</td><td th:text="${o.customer.name}">Frederic Tomato</td><td th:text="${#aggregates.sum(o.orderLines.{purchasePrice * amount})}">23.32</td><td><a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a></td></tr></table><p><a href="../home.html" th:href="@{/}">Return to home</a></p></body></html>
上面的代码应该没有使我们惊讶的东西,除了这一点点OGNL魔法:
<td th:text="${#aggregates.sum(o.orderLines.{purchasePrice * amount})}">23.32</td>
对于订单里的每一个订单行(OrderLine对象),将它的purchasePrice和amount属性相乘(通过调用相应的getPurchasePrice()和getAmount()方法),并返回数字的列表,之后通过#aggregates.sum(...)函数合计总价。
你已经爱上了❤️OGNL。
