Java 验证路径变量大小

Java 验证路径变量大小,java,spring,spring-boot,validation,spring-validator,Java,Spring,Spring Boot,Validation,Spring Validator,我找到了如何验证path变量的示例: @PostMapping(value=“/payment/{unique\u transaction\u id}”) public ResponseEntity handleWpfMessage(@PathVariable(“unique_transaction_id”)@Valid@Max(32)String unique_transaction_id)引发异常{ 我可以为字符串@Max(32)添加@Valid限制吗?或者我必须在类级别添加@Valida

我找到了如何验证path变量的示例:

@PostMapping(value=“/payment/{unique\u transaction\u id}”)
public ResponseEntity handleWpfMessage(@PathVariable(“unique_transaction_id”)@Valid@Max(32)String unique_transaction_id)引发异常{

我可以为字符串
@Max(32)
添加
@Valid
限制吗?或者我必须在类级别添加
@Validated
,如教程所示?

您可以为path变量定义正则表达式


@PostMapping(value=“/payment/{unique\u transaction\u id:[a-zA-Z0-9]{0,32}”)

但是我应该在类级别添加@Valid吗?不,不需要,
@Valid
验证您的请求主体POJO类中定义的所有约束。是否有其他方法使用注释应用[a-zA-Z0-9]限制?我不认为(或者我不知道)存在用于相同目的的任何批注。还有其他方法,如在筛选器/拦截器中验证它,但它不像上面的解决方案那样简单。这可能是spring中出于相同目的而进行的增强,在
@PathVariable
批注中添加字段regex。
@PostMapping(value = "/payment/{unique_transaction_id}")
      public ResponseEntity<StringResponseDTO> handleWpfMessage(@PathVariable("unique_transaction_id") @Valid @Max(32) String unique_transaction_id) throws Exception {