springmvc请求处理方法中有多个Bean类型参数解决方法(使用封装类将多个Bean设为属性,通过对封装类的注入实现多个Bean注入)
作者:互联网
承接上文
例如:
处理方法中有User和Role两个Bean类型参数,此时通过下面的方式赋值:
<%-- Created by IntelliJ IDEA. User: CDU_LM Date: 2022/6/8 Time: 17:11 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="${pageContext.request.contextPath}/user" method="post"> <%--User--%> <h1>User赋值</h1> id:<input name="id" type="text"/><br/><br/> 姓名:<input name="name" type="text"/><br/><br/> <%--数组--%> 小名:<input name="alias" type="checkbox" value="狗蛋" checked/>狗蛋 <input name="alias" type="checkbox" value="小黑" checked/>小黑<br/><br/> <%--List--%> 爱好:<input name="habbies" type="checkbox" value="唱歌" checked/>唱歌 <input name="habbies" type="checkbox" value="跳舞" checked/>跳舞<br/><br/> <%--Map--%> 亲属:<input name="relatives['father']" type="checkbox" value="爸爸" checked/> <input name="relatives['mother']" type="checkbox" value="妈妈" checked/>妈妈<br/><br/> <%--其它Bean--%> 角色:<input name="role.name" type="text"/><br/><br/> <%--List--%> 朋友:<input name="friends[0].name" type="text" value="张三"/><br/><br/> <input name="friends[1].name" type="text" value="李四"/><br/><br/> <%--Role--%> <h1>Role赋值</h1> id:<input name="id" type="text"><br/><br/> 姓名:<input name="name" type="text"/><br/><br/> <input type="submit" value="提交"/> </form> </body> </html>
报错:
所以,需要使用另一种方式进行赋值:
创建一个属性包含User和Role类的封装类:
package cn.cdulm.entity; import java.util.Objects; public class UserDTO { private User user; private Role role; @Override public String toString() { return "UserDTO{" + "user=" + user + ", role=" + role + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserDTO userDTO = (UserDTO) o; return Objects.equals(user, userDTO.user) && Objects.equals(role, userDTO.role); } @Override public int hashCode() { return Objects.hash(user, role); } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } }
然后将处理方法中的参数改为封装类:
然后将请求页面的参数改为:
<%-- Created by IntelliJ IDEA. User: CDU_LM Date: 2022/6/8 Time: 17:11 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="${pageContext.request.contextPath}/ud" method="post"> <%--User--%> <h1>User赋值</h1> id:<input name="user.id" type="text"/><br/><br/> 姓名:<input name="user.name" type="text"/><br/><br/> <%--数组--%> 小名:<input name="user.alias" type="checkbox" value="狗蛋" checked/>狗蛋 <input name="user.alias" type="checkbox" value="小黑" checked/>小黑<br/><br/> <%--List--%> 爱好:<input name="user.habbies[0]" type="checkbox" value="唱歌" checked/>唱歌 <input name="user.habbies[1]" type="checkbox" value="跳舞" checked/>跳舞<br/><br/> <%--Map--%> 亲属:<input name="user.relatives['father']" type="checkbox" value="爸爸" checked/> <input name="user.relatives['mother']" type="checkbox" value="妈妈" checked/>妈妈<br/><br/> <%--其它Bean--%> 角色:<input name="user.role.name" type="text"/><br/><br/> <%--List--%> 朋友:<input name="user.friends[0].name" type="text" value="张三"/><br/><br/> <input name="user.friends[1].name" type="text" value="李四"/><br/><br/> <%--Role--%> <h1>Role赋值</h1> id:<input name="role.id" type="text"><br/><br/> 姓名:<input name="role.name" type="text"/><br/><br/> <input type="submit" value="提交"/> </form> </body> </html>
此时请求并输入参数:
响应成功:
输出结果:
UserDTO{user=User{id=1, name='蜘蛛侠', alias=[狗蛋, 小黑], habbies=[唱歌, 跳舞], relatives={father=爸爸, mother=妈妈}, role=Role{id=null, name='管理员'}, friends=[User{id=null, name='张三', alias=null, habbies=null, relatives=null, role=null, friends=null}, User{id=null, name='李四', alias=null, habbies=null, relatives=null, role=null, friends=null}]}, role=Role{id=101, name='钢铁侠'}}
发现Role类中的属性也赋值成功。
标签:封装,多个,Bean,role,user,Role,null,id,User 来源: https://www.cnblogs.com/0099-ymsml/p/16358208.html