提问人:Deepak Kumar 提问时间:11/9/2023 更新时间:11/11/2023 访问量:38
javax 实体验证不适用于具有相同值的@Min和@Max(如 moblieNo 应为精确的 10 位数字)
javax entity validation is not working for @Min and @Max having same value(like moblieNo should be of exact 10 digits)
问:
@NotNull(message = "Mobile number cannot be null.")
@Max(value = 10, message ="Mobile number length should be 10 characters." )
@Min(value = 10, message ="Mobile number length should be 10 characters." )
@Column(name = "mob_no")
private Long mobNo;
如果给出 10 位值,它不应该给出消息“手机号码长度应为 10 个字符”
答:
0赞
Rafael Guillen
11/9/2023
#1
根据您的描述,您需要一个 而不是 a for .假设您有一个这样的电话号码: ,因为值为 。对 a 的验证应如下所示:String
Long
mobNo
0005550001
Long
550001
String
@Size(min = 10, max = 10, message = "Mobile number length should be 10 characters.")
private String mobNo;
编辑: 一个好的、更全面的替代方法是根据匹配 10 位数字的正则表达式进行验证:
@Pattern(regexp = "^\d{10}$", message = "Mobile number length should be 10 characters.")
private String mobNo;
编辑: 在答案中添加注释
如果为 a,则无法将其更改为 ,请使用以下命令进行验证:mobNo
Long
String
@Min(1_000_000_000L)
@Max(9_999_999_999L)
Long mobNo
这是 Long 有 10 位数字的值范围。
但是,在选择“长”或“电话号码”字段之前,请考虑上面的示例:
前任:0_005_550_001
这是一个有效的电话号码,但作为 ITS 表示的 .Long
550001
评论
0赞
Deepak Kumar
11/10/2023
private String mobNo;不在 String 中,而是在 Long 中
1赞
Johannes Becker
11/9/2023
#2
您有一个定义为 Long 的字段,这是一个数字。@min @max注释用于数值比较。所以实际上你说.这意味着 mobNo 必须等于 10。10 <= mobNo <= 10
解释你的消息,你真正想做的是,有一个十位数字的电话号码(这将是一个字符串,不长)。如果是 String,则可以使用 @Size(min,max) 注解。请参阅文档。
评论