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================
=================广州大学城================

猜你喜欢

转载自blog.csdn.net/caser_hdmi/article/details/76549029
今日推荐