【SpringMVC】在业务控制方法中写入User,Admin多个模型收集参数(十四)

来源:互联网 发布:软件建设方案怎么写 编辑:程序博客网 时间:2024/06/04 19:50

1) 可以在业务控制方法中书写1个模型来收集客户端的参数

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

3) 这里说的模型不是Model对象,Model是向视图中封装的数据

@Controller@RequestMapping(value = "/user")public class UserAction {@InitBinderprotected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));}@RequestMapping(value = "/add", method = RequestMethod.POST)public String add(User user,Model model) throws Exception {System.out.println("HelloAction::add()::POST");model.addAttribute("user",user);return "/register.jsp";}}

 


如果UserAdmin的属相有同名的属性的时候,这时候就面临一个尴尬局面,这里我们处理的方法将UserAdmin封装到一个Bean中,并将Bean作为业务方法的参数传入,然后jsp页面通过user.属性名的方式调用

可以在业务控制方法中书写0个或多个模型来收集客户端的参数

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

2) 用一个新的模型将UserAdmin再封装一次

User.java

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;}@Overridepublic String toString() {return this.id + ":" + this.name + ":" + this.sal + ":" + this.hiredate;}}




Bean.java

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;}}




PersonAction.java

@Controller@RequestMapping(value = "/person")public class PersonAction {@InitBinderprotected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));}@RequestMapping(value = "/add", method = RequestMethod.POST)public String add(Bean bean,Model model) throws Exception {System.out.println(bean.getUser());System.out.println(bean.getAdmin());System.out.println("PersonAction::add()::POST");model.addAttribute("bean",bean);return "/register.jsp";}}

register.jsp

 

   普通用户<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='<fmt:formatDate value="${bean.user.hiredate}" type="both" />'/><br/><input type="submit" value="注册"/></form>

阅读全文
0 0
原创粉丝点击