在实际的开发之中经常面对页面要显示对象内容的处理操作,于是下面来观察一下如何进行对象信息的输出
1.准备一个VO类
package cn.mldn.microboot.vo;
import java.io.Serializable;
import java.util.Date;
@SuppressWarnings("serial")
public class Member implements Serializable {
private Long mid ;
private String name ;
private Integer age ;
private Date birthday ;
private Double salary ;
public Long getMid() {
return mid;
}
public void setMid(Long mid) {
this.mid = mid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
}
2.编写一个控制器将对象内容进行属性传递
package cn.mldn.microboot.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;
import org.springframework.web.bind.annotation.RequestMethod;
import cn.mldn.microboot.util.controller.AbstractBaseController;
import cn.mldn.microboot.vo.Member;
@Controller
public class MessageController extends AbstractBaseController {
@RequestMapping(value = "/message/member_show", method = RequestMethod.GET)
public String memberShow(Model model) {
Member vo = new Member();
vo.setMid(101L);
vo.setName("啊三");
vo.setAge(9);
vo.setSalary(99999.99);
vo.setBirthday(new Date());
model.addAttribute("member", vo);
return "message/member_show";
}
}
3.编写一个具体的页面进行输出
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>SpringBoot模版渲染</title>
<script type="text/javascript" th:src="@{/js/main.js}"></script>
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<p th:text="'用户编号:' + ${member.mid}"/>
<p th:text="'用户姓名:' + ${member.name}"/>
<p th:text="'用户年龄:' + ${member.age}"/>
<p th:text="'用户工资:' + ${member.salary}"/>
<p th:text="'出生日期:' + ${member.birthday}"/>
<p th:text="'出生日期:' + ${#dates.format(member.birthday,'yyyy-MM-dd')}"/>
</body>
</html>
4.现在程序编写到此处能发现一个小小的问题,如果要现在按照此类方式进行输出,我们会觉得这个操作太麻烦了,有一种更简单的做法:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>SpringBoot模版渲染</title>
<script type="text/javascript" th:src="@{/js/main.js}"></script>
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<div th:object="${member}">
<p th:text="'用户编号:' + *{mid}"/>
<p th:text="'用户姓名:' + *{name}"/>
<p th:text="'用户年龄:' + *{age}"/>
<p th:text="'用户工资:' + *{salary}"/>
<p th:text="'出生日期:' + *{birthday}"/>
<p th:text="'出生日期:' + *{#dates.format(birthday,'yyyy-MM-dd')}"/>
</div>
</body>
</html>
区别:关于"${属性}"和"*{属性}"区别?
这两种属性访问机制在访问单独或者是完整属性时候是一样的,而如果要使用"*{}"形式进行访问往往需要结合"th:object"作为整体对象的声明后,才可以访问属性。
$访问完整信息,而*访问指定对象中的属性内容,如果访问的只是普通的内容两者没有区别。