承接上文
例如:
处理方法中有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>
此时请求并输入参数:
响应成功:
输出结果:
1 | 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类中的属性也赋值成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)