迭代:
- 条件选择:
- IF-THEN: (if) ? (then)
- IF-THEN-ELSE: (if) ? (then) : (else)
- 默认: (value) ?: (defaultvalue)
所有这些功能都可以组合和嵌套
1.迭代:
后台Controller文件添加:
1 @RequestMapping(value = "getUsers", method = RequestMethod.GET) 2 public String getUsers(Model model) { 3 User user = new User(); 4 user.setName("Jack"); 5 user.setAge(12); 6 User user1 = new User(); 7 user1.setName("Tesla"); 8 user1.setAge(11); 9 User user2 = new User(); 10 user2.setName("Ella"); 11 user2.setAge(9); 12 List<User> users = new ArrayList<User>(); 13 users.add(user); 14 users.add(user1); 15 users.add(user2); 16 model.addAttribute("users",users); 17 return "subscribe"; 18 }
如下所示:
前台添加:
1 <table> 2 <tr> 3 <th>NAME</th> 4 <th>PRICE</th> 5 </tr> 6 <tr th:each="user : ${users}"> 7 <td th:text="${user.name}"></td> 8 <td th:text="${user.age}"></td> 9 </tr> 10 </table>
如下所示:
运行结果:
迭代的对象:
一组非常完整的对象被属性认为是可迭代的th:each
:
- 任何实现
java.util.Iterable的对象
- 任何实现
java.util.Map
。 - 任何数组
- 任何其他包含对象本身的单值列表的对象。
状态变量在th:each属性中定义,包含以下数据:
- 当前迭代索引,从0开始。这是index属性。
- 当前迭代索引,从1开始。这是count属性。
- 迭代变量中元素的总量。这是size酒店。
- 每次迭代的iter变量。这是current酒店。
- 当前迭代是偶数还是奇数。这些是even/odd布尔属性。
- 当前迭代是否是第一个迭代。这是first布尔属性。
- 当前迭代是否是最后一次。这是last布尔属性。
如果您没有显式设置状态变量,Thymeleaf将始终通过后缀Stat
为迭代变量的名称为您创建一个
例如:
前台添加如下代码:
1 <table> 2 <tr> 3 <th>index</th> 4 <th>name</th> 5 <th>age</th> 6 <th>>11?</th> 7 <th>last?</th> 8 </tr> 9 <tr th:each="user : ${users}"> 10 <td th:text="${userStat.index}"></td> 11 <td th:text="${user.name}"></td> 12 <td th:text="${user.age}>11?yes:no"></td> 13 <td th:text="最后一次+${userStat.last}?yes:no"></td> 14 </tr> 15 </table>
输入地址访问。结果如下:
2.判断与选择语句示例:
页面插入代码:
1 <a th:if="1==1">view</a> 2 <a th:if="1==2">view</a> 3 4 <div th:each="user : ${users}"> 5 <div th:switch="${user.age}"> 6 <p th:case="11">User is an administrator</p> 7 <p th:case="9">User is a manager</p> 8 <p th:case="*">User is some other thing</p> 9 <p th:text="${user.name}+${user.age}"/> 10 </div> 11 </div>
结果如下所示: