springMVC jsp传送两个不同对象给Controller

最近学习springmvc,想从jsp传送两个java对象的数据给Controller自动装配,在网上查了好久都是List对象的传送,最后终于查到了多个java对象的传送。
这里以用户(User)与用户详细信息(UserDetail)的更新为例,更新用户信息时,同时传送User以及UserDetail。
UserDetail以User的id为主键以及外键:
User.java

@Component
public class User {

    private int id;
    private String name;
    private int age=0;
    //getter and setter
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

UserDetail.java

@Component
public class UserDetail {
    private int id;
    private String sex;
    private String phone;
    private String address;
    //getter and setter
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

关键方法:
UserController

    @RequestMapping(value="/updateuser.action",method=RequestMethod.POST)
    public ModelAndView updateUser(User user,UserDetail userDetail){

        System.out.println("================="+user.getId()+"================");
        System.out.println("================="+user.getName()+"================");
        System.out.println("================="+userDetail.getSex()+"================");
    System.out.println("================="+userDetail.getPhone()+"================");
    System.out.println("================="+userDetail.getAddress()+"================");
            userService.updateUser(user,userDetail);
    }

    @InitBinder("user")
    public void userBinder(WebDataBinder webDataBinder){
        webDataBinder.setFieldDefaultPrefix("user.");
    }

    @InitBinder("userDetail")
    public void userDetailBinder(WebDataBinder webDataBinder){
        webDataBinder.setFieldDefaultPrefix("userDetail.");
    }
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

webDataBinder.setFieldDefaultPrefix(“user.”);来标明jsp中用user.id来传送参数,看清楚上面有“.”
这里用@InitBinder来绑定参数,InitBinder里面的参数通过测试,好像是以类名称的驼峰式命名,我做了一下的实验:

  • 我以@Compoment(“User”)来命名UserBean,但是@InitBinder的参数一样得为驼峰式的”user”才有效
  • 我修改了updateUser方法中的参数名,把User user改为User users,结果还是得为驼峰式的”user”才能接收到值

jsp页面:

            <div class="modal-body">
                编号:<input type="text" name="user.id" id="editId" readonly="true"/><br>
                姓名:<input type="text" name="user.name" id="editName" /><br> 
                年龄:<input type="text" name="user.age" id="editAge" /><br>
            性别:<input id="editSex" type="radio" name="userDetail.sex" value="男"/>男
                <input id="editSex" type="radio" name="userDetail.sex" value="女"/>女<br> 
                电话:<input type="text" name="userDetail.phone" id="editPhone"/><br> 
                地址:<input type="text" name="userDetail.address" id="editAddress"/>
            </div>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

结果:

=================15================
=================大金================
=================男================
=================123456789================
=================广州大学城================
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/markdown_views-ea0013b516.css">
                        </div>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值