如何指定一个请求参数绑定到某个控制器方法参数而不是Spring MVC中的模型属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何指定一个请求参数绑定到某个控制器方法参数而不是Spring MVC中的模型属性?相关的知识,希望对你有一定的参考价值。

这是一个模型类:

public class Contract{
   private Integer id;
   private String code;
}

这是一个控制器方法:

@RequestMapping(value="/generate-contract", method=GET)
public JsonResult generateContract(Contract contract, String code) throws Exception{
    //TODO
    return JsonResult.ok(data);
}

如果我将参数id=1&code=DW23传递给方法,如何仅指定contractcode属性存储值或仅指定方法参数code存储值DW23

现在,从我的实验中,他们都获得了价值。

答案

您可以使用@RequestParam将请求参数映射到java变量。它也进行类型转换。

@RequestMapping(value="/generate-contract", method=GET)
public JsonResult generateContract(@RequestParam int id, @RequestParam String code) throws Exception{
    //TODO
    return JsonResult.ok(data);
}

通过指定required@RequestParam属性,可以使参数成为可选参数。例如@RequestParam(value = "name", required=false) final String name。这样,你必须通过创建一个新实例来手动填充契约的属性。

以上是关于如何指定一个请求参数绑定到某个控制器方法参数而不是Spring MVC中的模型属性?的主要内容,如果未能解决你的问题,请参考以下文章

数据绑定

Compojure 绑定来自 URL 的 HTTP 请求参数,而不是来自 POST 表单

模型绑定

spirng 数据绑定

如何将对不同变量/类属性的引用作为方法参数而不是值?

Action 有多个参数被指定或推断为从请求正文绑定。每个动作只能绑定一个参数