您的位置:首页 > 编程语言 > Java开发

在控制类的方法参数中利用javabean(实体类)来收集参数 (10)

2017-04-24 16:28 99 查看
在业务控制方法中写入User实体类参数

模型中的属性名必须和客户端参数名一一对应

这里说的模型不是Model对象,这里的模型是指一个javabean,Model是向视图中封装的数据

步一:创建User实体类

package com.mo.pojo;

import java.util.Date;

public class User {
private Integer id;
private String name;
private Double sal;
private Date hiredate;
public User(){}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
@Override
public String toString() {
return this.id + ":" + this.name + ":" + this.sal + ":" + this.hiredate;
}

}
步二:编写/jsp/6.jsp创建一个表单,这里表单里面的name属性必须与User里面对应的属性一致,

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '5.jsp' starting page</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/person/pojo.action" method="post">
编号:<input type="text" name="id" value="${user.id}"/><br/>
姓名:<input type="text" name="name" value="${user.name}"/><br/>
薪水:<input type="text" name="sal" value="${user.sal}"/><br/>
入职时间:<input type="text" name="hiredate" value="${user.hiredate}"/><br/>
<input type="submit" value="提交">
</form>
</body>
</html>


步三:编写控制类及方法

@Controller
@RequestMapping(value="/person")
public class PersonAction {

//将客户端的String类型的数据转化成Date类型的
@InitBinder
protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(
Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}

@RequestMapping(value="/pojo")
public String pojo(User user,Model model){
System.out.println(user);
model.addAttribute("user",user);
return "/jsp/6.jsp";
}


步四:部署项目。访问http://localhost:8080/springmvc02/jsp/6.jsp

输入数据,经过控制类,会将客户端的数据对照User中的属性就行对应,然后匹配上的就封装到user中,model.addAttribute("user",user);到model中

在/jsp/6.jsp通过EL表达式可以访问到的model中的user数据

在业务控制方法中写入多个实体类参数

1)如果多个模型中有相同的属性时,可以用user.name或admin.name来收集客户端参数

编号:<input type="text" name="name" value="${user.id}"/><br/> 因为这里的name="name"不知道指的是user的name属性还是admin的name属性

2)用一个新的模型将User和Admin再封装一次,封装在Bean类中
分别编写User类和Admin类(这里不写了)
Bean.java

package com.mo.pojo;

public class Bean {
private User user;
private Admin admin;
public Bean(){}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}

}


编写/jsp/5.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '5.jsp' starting page</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/person/add.action" method="post">
编号:<input type="text" name="user.id" value="${bean.user.id}"/><br/>
姓名:<input type="text" name="user.name" value="${bean.user.name}"/><br/>
薪水:<input type="text" name="user.sal" value="${bean.user.sal}"/><br/>
入职时间:<input type="text" name="user.hiredate" value="${bean.user.hiredate}"/><br/>
<input type="submit" value="提交">
</form>
</body>
</html>


编写控制类

@Controller
@RequestMapping(value="/person")
public class PersonAction {

//将客户端的String类型的数据转化成Date类型的
@InitBinder
protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(
Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}

@RequestMapping(value="/add")
public String add(Bean bean,Model model){
System.out.println(bean.getUser());
System.out.println(bean.getAdmin());
model.addAttribute("bean",bean);
return "/jsp/5.jsp";
}


访问http://localhost:8080/springmvc02/jsp/5.jsp,填写表单数据提交 经过控制类的处理,将数据封装到bean中,并model.addAttribute("bean",bean);放到model中,在返回到/jsp/5.jsp中将数据提取出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: