如何在 Spring 的 @RestController 中验证参数对象中的 url 参数包
How to validate url parameters bundle in parameter object in Spring's @RestController
我有一个标准的@RestController
方法。为了避免大量的方法参数,我引入了一个参数对象(MyMapQuery
):
@RestController
public class MyController {
@RequestMapping(value = "/api/search")
@ResponseBody
public SearchResponse search(MyMapQuery query) {
[...]
}
MyMapQuery
是一个带有 setter 和 getter 的标准 java bean,所以当我传递多个 url 参数时 http://.../api/search?west=1&east=2&north=20&south=0
,它们被正确填充。
如何对某些 url 参数实施必需的验证?
Spring 自动响应 400(错误请求),当参数如下映射时,但在 MyMapQuery
.
的情况下不进行验证
public SearchResponse search(@RequestParam BigDecimal east, @RequestParam BigDecimal west, ...) {
只需使用
public SearchResponse search(@Valid MyMapQuery query) {
并将必要的 bean 验证注释添加到 MyMapQuery 的字段。
我有一个标准的@RestController
方法。为了避免大量的方法参数,我引入了一个参数对象(MyMapQuery
):
@RestController
public class MyController {
@RequestMapping(value = "/api/search")
@ResponseBody
public SearchResponse search(MyMapQuery query) {
[...]
}
MyMapQuery
是一个带有 setter 和 getter 的标准 java bean,所以当我传递多个 url 参数时 http://.../api/search?west=1&east=2&north=20&south=0
,它们被正确填充。
如何对某些 url 参数实施必需的验证?
Spring 自动响应 400(错误请求),当参数如下映射时,但在 MyMapQuery
.
public SearchResponse search(@RequestParam BigDecimal east, @RequestParam BigDecimal west, ...) {
只需使用
public SearchResponse search(@Valid MyMapQuery query) {
并将必要的 bean 验证注释添加到 MyMapQuery 的字段。