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

来源:互联网 发布:免费视频录像软件 编辑:程序博客网 时间:2024/06/05 04:25

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

@Componentpublic class User {    private int id;    private String name;    private int age=0;    //getter and setter}

UserDetail.java

@Componentpublic 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=================================广州大学城================
原创粉丝点击