在controller的处理函数,有可能会遇到,请求的参数由相同的成员的情况: ``` java @RequestMapping(value = "path",method = RequestMethod.POST) public Map addPasswordInformation(A a,B b){ // do something here } ``` 其中`A` 和 `B` 都有相同的成员`c`的话,无法自动的把相应的值绑定到中。 ## 解决方法 使用`InitBinder`注解 ### 定义binder方法 ``` java @InitBinder("a") public void initUserBinder(WebDataBinder webDataBinder){ webDataBinder.setFieldDefaultPrefix("classA."); } @InitBinder("b") public void initUserBinder(WebDataBinder webDataBinder){ webDataBinder.setFieldDefaultPrefix("classB."); } ``` ### 在controller方法的参数添加注解 ``` java @RequestMapping(value = "path",method = RequestMethod.POST) public Map addPasswordInformation(@ModelAttribute("a") A a, @ModelAttribute("b") B b){ // do something here } ``` `@ModelAttribute("..")` 注解的参数要和binder方法的`@InitBinder("..")`注解相同。 ### 修改请求的数据 ``` python data = { 'classA.c':'asdasdasd', , 'classB.c':'asdasdasd', } ``` 以上是python代码,不过都是一样的,把**键**改成带前缀的。