前言
本章继续来谈Thymeleaf语法中较为关键的三种:日期转换、条件判断、获取作用域对象值
方法
本章示例沿用上一章节的示例内容
修改controller:
package cn.edu.ccut.controller;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/showMsg")
public String getMsg(HttpServletRequest request, Model model){
model.addAttribute("msg", "this is thymeleaf !");
model.addAttribute("time", new Date());
model.addAttribute("sex", "男");
model.addAttribute("num", 2);
request.setAttribute("req", "request");
request.getSession().setAttribute("ses", "session");
request.getSession().getServletContext().setAttribute("app", "application");
return "index";
}
}
1.日期转换
日期转换包含格式化时间,还有获取具体的年、月、日
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf</title>
</head>
<body>
<!-- 格式化时间 -->
<span th:text="${#dates.format(time)}"></span><br/>
<span th:text="${#dates.format(time,'yyyy-MM-dd')}"></span><br/>
<!-- 获取年月日 -->
<span th:text="${#dates.year(time)}"></span><br/>
<span th:text="${#dates.month(time)}"></span><br/>
<span th:text="${#dates.day(time)}"></span>
</body>
</html>
执行结果如下:
2.条件判断
1)比较运算符
gt:great than(大于)>
ge:great equal(大于等于)>=
eq:equal(等于)==
lt:less than(小于)<
le:less equal(小于等于)<=
ne:not equal(不等于)!=
使用示例:
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf</title>
</head>
<body>
<span th:if="${sex} == '男' ">
性别:男
</span>
<span th:if="${sex} == '女' ">
性别:女
</span>
<span th:if="${sex} eq '男' ">
性别:男
</span>
<span th:if="${sex} eq '女' ">
性别:女
</span>
</body>
</html>
2)其他运算符
switch...case...
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf</title>
</head>
<body>
<div th:switch="${num}">
<p th:case="1">数字是1</p>
<p th:case="2">数字是2</p>
</div>
</body>
</html>
3.获取作用域对象值
我们学习JSP的时候获取过三大作用域对象的值,即request、session、application
那么thymeleaf也是可以获取的,语法如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf</title>
</head>
<body>
request:<span th:text="${req}"/><br/>
session:<span th:text="${session.ses}"/><br/>
application:<span th:text="${application.app}"/>
</body>
</html>
这里仍然要明确的是:${data}与${param.data}的区别?
前者相当于从后台获取的值,即request.getAttribute("data");的值
后者相当于从页面传递过来的值,即request.getParameter("data");的值
这一点,我相信大家学习JSP的时候应该已经注意到了这个问题,我这里多啰嗦一下!