在 controller 的處理函數,有可能會遇到,請求的參數由相同的成員的情況:
@RequestMapping(value = "path",method = RequestMethod.POST)
public Map<String,Object> addPasswordInformation(A a,B b){
// do something here
}
其中A
和 B
都有相同的成員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 代碼,不過都是一樣的,把鍵改成帶前綴的。