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



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

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

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

@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);
}

在类级别上,使用@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>

相关内容

  • 没有找到相关文章

最新更新