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
}

UserDetail.java

@Component
public class UserDetail {
    private int id;
    private String sex;
    private String phone;
    private String address;
    //getter and setter
}

关键方法:
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.");
    }

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>

结果:

=================15================
=================大金================
=================男================
=================123456789================
=================广州大学城================
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值