ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springmvc请求处理方法中有多个Bean类型参数解决方法(使用封装类将多个Bean设为属性,通过对封装类的注入实现多个Bean注入)

2022-06-09 10:03:10  阅读:214  来源: 互联网

标签:封装 多个 Bean role user Role null id User


承接上文

例如:

 

处理方法中有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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有