如果输入为空,@Pattern 注释将不起作用

问题描述 投票:0回答:1

请参考以下控制器代码:-

@GetMapping("/fetch)
void fetchData( @RequestParam 
                 @Pattern(regexp="(^$|[0-9]{10})",message = "Mobile number must be 10 digits")
                 String mobileNumber)
{
 .........//some functionality
}

现在如果我调用上面的API:-

http://localhost:8080/fetch?mobileNumber=123456789

我收到错误消息:- 手机号码必须为 10 位数字。

但是,如果我使用空手机号码使用相同的 API,则模式验证将不起作用,并且将继续执行该方法。所以如果我调用以下端点:-

http://localhost:8080/fetch?mobileNumber=

验证不起作用,我没有收到错误消息。

您能告诉我问题是什么吗?为什么第二个请求没有触发错误消息?我错过了与正则表达式相关的东西吗?

spring-boot validation bean-validation hibernate-validator
1个回答
0
投票

接受

CharSequence
null
元素被视为有效。

上面引用了

@Pattern
注释的 JavaDoc。

因为

@Pattern
允许空/空值。为了防止这些情况发生,您需要在场上额外添加
@NotEmpty

© www.soinside.com 2019 - 2024. All rights reserved.