banner
RustyNail

RustyNail

coder. 【blog】https://rustynail.me 【nostr】wss://ts.relays.world/ wss://relays.world/nostr

請求參數相同的情況

在 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 代碼,不過都是一樣的,把改成帶前綴的。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。