if判断语句
如果if条件满足,则此标签留下,若if条件不满足,则此标签自动被移除
<div th:if="${eval}">我是判断条件标签</div>
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Context context = new Context();
context.setVariable("eval", true);
engine.process("test.html", context, resp.getWriter());
}
th:if`会根据其中传入的值或是条件表达式的结果进行判断,只有满足的情况下,才会显示此标签
- 如果值不是空的:
- 如果值是布尔值并且为`true`。
- 如果值是一个数字,并且是非零
- 如果值是一个字符,并且是非零
- 如果值是一个字符串,而不是“错误”、“关闭”或“否”
- 如果值不是布尔值、数字、字符或字符串。
- 如果值为空,th:if将计算为false
`th:if`还有一个相反的属性`th:unless`,效果完全相反
多分支条件判断,可以使用`th:switch`属性来实现
<div th:switch="${eval}">
<div th:case="1">我是1</div>
<div th:case="2">我是2</div>
<div th:case="3">我是3</div>
</div>
只不过没有default属性,但是可以使用`th:case="*"`来代替
<div th:case="*">我是Default</div>
可以使用`th:each`来进行遍历操作
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Context context = new Context();
context.setVariable("list", Arrays.asList("伞兵一号的故事", "倒一杯卡布奇诺", "玩游戏要啸着玩", "十七张牌前的电脑屏幕"));
engine.process("test.html", context, resp.getWriter());
}
<ul>
<li th:each="title : ${list}" th:text="'《'+${title}+'》'"></li>
</ul>
`th:each`中需要填写 "单个元素名称 : ${列表}",这样,所有的列表项都可以使用遍历的单个元素,只要使用了`th:each`,都会被循环添加
获取当前循环的迭代状态,只需要在最后添加`iterStat`
<ul>
<li th:each="title, iterStat : ${list}" th:text="${iterStat.index}+'.《'+${title}+'》'"></li>
</ul>
从中可以获取很多信息
- 当前*迭代索引*,以0开头。这是`index`属性。
- 当前*迭代索引*,以1开头。这是`count`属性。
- 迭代变量中的元素总量。这是`size`属性。
- 每个迭代的*迭代变量*。这是`current`属性。
- 当前迭代是偶数还是奇数。这些是`even/odd`布尔属性。
- 当前迭代是否是第一个迭代。这是`first`布尔属性。
- 当前迭代是否是最后一个迭代。这是`last`布尔属性。