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 代码,不过都是一样的,把改成带前缀的。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。