DengQN·一个普通程序员;
请求参数相同的情况
2018-09-30 17:00 67
#方法#注解#参数#相同#请求#成员#处理函数#可能#会#遇到

在controller的处理函数,有可能会遇到,请求的参数由相同的成员的情况:

@RequestMapping(value = "path",method = RequestMethod.POST)
public Map<String,Object> addPasswordInformation(A a,B b){
    // do something here
}

其中AB 都有相同的成员c的话,无法自动的把相应的值绑定到中。

解决方法

使用InitBinder注解

定义binder方法

@InitBinder("a")
public void initUserBinder(WebDataBinder webDataBinder){
    webDataBinder.setFieldDefaultPrefix("classA.");
}

@InitBinder("b")
public void initUserBinder(WebDataBinder webDataBinder){
    webDataBinder.setFieldDefaultPrefix("classB.");
}

在controller方法的参数添加注解

@RequestMapping(value = "path",method = RequestMethod.POST)
public Map<String,Object> addPasswordInformation(@ModelAttribute("a") A a, 
                                                @ModelAttribute("b") B b){
    // do something here
}

@ModelAttribute("..") 注解的参数要和binder方法的@InitBinder("..")注解相同。

修改请求的数据

data = {
    'classA.c':'asdasdasd',
    ,
    'classB.c':'asdasdasd',
}

以上是python代码,不过都是一样的,把改成带前缀的。