我想创建应用程序以验证用户提供的数据。这是一个例子。
Word.java
@Data
class Word {
@NotBlank(message = "Please, enter your text")
@Size(min = 3, message = "Your text is too short")
@Pattern(regexp = "^[A-Z]+[a-z]+$", message = "Your text is incorrect")
private String text;
}
我想验证text
字段,我只能查看一个错误,例如:
输入{text: ""}
:
预期产出应为Please, enter your text
,
但实际输出是:Please, enter your text, Your text is too short, Your text is incorrect
输入{text: "ab"}
预期产出应为Your text is too short
但实际输出是:Your text is too short, Your text is incorrect
我尝试使用@ReportAsSingleViolation
注释进行自定义验证器,但没有任何更改。
你知道吗,怎么解决?谢谢你的所有答案。
修改
有时错误的顺序不正确,但我不知道为什么。例如
输入{text: ""}
:
预期产出应为Please, enter your text
,
但实际输出是:Your text is incorrect, Your text is too short, Please, enter your text
答案 0 :(得分:0)
你走在正确的轨道上,却缺少一些东西。添加椭圆形验证后,您需要实现一个方法,该方法接收您的对象并根据椭圆验证它。
您的示例显示您已完成此操作,但您打印所有这些内容而不是使用不同的案例来抛出不同的例外。
以下是示例 -
public static Set<ConstraintViolation> getOvalViolations(Object obj){
Validator validator = new Validator();
Set<ConstraintViolation> violations = new HashSet(validator.validate(obj));
return violations;
}
这将为您提供一组ConstraintViolation,您可以使用要从列表中抛出的那个。您可以检查每个案例的主要例外并适当地抛出它们。
希望这有帮助!