[英]How to narrow down methods with body parameters in SpringMVC?
很像@RequestMapping注解中的params ,缩小了查询参数的匹配方法。 相反,我想通过主体参数(如 JSON 格式)来实现这一点。 我是否需要实现自定义 @RequestMapping 注释?
您可以使用@RequestBody 实现它。 它将负载与代码中指定的名称相匹配。
你只需要使用@RequestBody
。 请注意,这不仅允许POJO ,您也可以将它与Map一起使用。
使用POJO :
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(@RequestBody MyDto dto) {
return service.requestOTP(dto.getField1(), dto.getField2());
}
使用Map :
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(@RequestBody Map<String, Object> body) {
return service.requestOTP(body.get("field1").toString(), body.get("field2").toString());
}
注意:如果您想验证与@RequestBody
一起使用的 object 的属性,您可以添加@Valid
注释。 例如,以下将对 model 和模型子 model 字段(如果找到)进行级联验证。
public class MyDto {
@NotNull
@Valid
private String field1;
private String field2;
//getters and setters
}
@RequestMapping(value="/",method = RequestMethod.POST)
public String doSomething(**@Valid** @RequestBody MyDto dto) {
return service.requestOTP(dto.getField1(), dto.getField2());
}
在这里查看@Valid
的勇敢介绍https://www.logicbig.com/tutorials/java-ee-tutorial/bean-validation/cascaded-validation.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.