承接上文
例如:
处理方法中有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类中的属性也赋值成功。