字符串最大长度验证在 Spring 中不起作用

时间:2021-06-01 16:00:03

标签: java spring rest validation

在我的一个应用程序中,我有一个端点,我想从中验证其输入参数。

此方法接收的参数之一是一个字符串,我尝试设置它的最大长度,但它不起作用。当我使用超过 100 个字符的字符串调用端点时,我可以毫无问题地执行此操作,并且不应允许

问题是我需要以尽可能少的更改来执行此验证,因为此方法是从我不管理的其他应用程序中调用的,并且执行任何类型的修改都是昂贵的:将属性合并到一个豆

@SecuredApi(securityLevels = {SecuredApiLevel.COMPANY, SecuredApiLevel.USER})
@GetMapping("/example")
public ResponseEntity<SearchRestDTO> search(
    **@Valid @Size(max=100)** @RequestParam(value = "query") @ApiParam(required = true, value = "The query that is searched") String query,
    return new ResponseEntity<>(searchService.search(query)), HttpStatus.OK);
}

1 个答案:

答案 0 :(得分:0)

在类级别,使用 @Validated,然后使用 @Valid 注释的验证应该可以正常工作。

这是测试的示例代码 -

@Validated
@RestController
public class TestController {

    @GetMapping("/example")
    public ResponseEntity<String> search(
        @Valid @Size(max=5) @RequestParam(value = "query") String query) {
        return new ResponseEntity<>("String Length is valid.", HttpStatus.OK);
    }
}

此外,@Valid 不是必需的,直到您有完整的对象要验证。

需要以下依赖项-

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
相关问题