Spring引导验证-如何从字段中仅返回一个错误
我想创建一个应用程序来验证用户提供的数据。这里有一个例子 Word.javaSpring引导验证-如何从字段中仅返回一个错误,spring,validation,Spring,Validation,我想创建一个应用程序来验证用户提供的数据。这里有一个例子 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") pr
@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:“ab”}
预期输出应该是您的文本太短
但实际输出是:您的文本太短,您的文本不正确
我尝试使用@reportassingelivalition
注释执行自定义验证器,但没有任何更改
你知道怎么解决吗?谢谢你的回答
编辑
有时错误的顺序不正确,但我不知道为什么。比如说
对于输入{text::}
:
预期输出应为,请输入文本,
但实际输出是:您的文本不正确,您的文本太短,请输入您的文本
您在正确的轨道上,但缺少一些东西。添加椭圆验证后,您需要实现一个方法,该方法接收对象并根据椭圆验证它
您的示例显示您已经这样做了,但是您正在打印所有的异常,而不是创建不同的案例来抛出不同的异常
以下是一个例子:
public static Set<ConstraintViolation> getOvalViolations(Object obj){
Validator validator = new Validator();
Set<ConstraintViolation> violations = new HashSet(validator.validate(obj));
return violations;
}
publicstaticset getOvalViolations(objectobj){
Validator Validator=新验证器();
集合冲突=新的HashSet(validator.validate(obj));
返回违规行为;
}
这将为您提供一组ConstraintViolation,您可以使用要从列表中抛出的约束。您可以检查每个案例的主要异常,并适当地抛出它们
希望这有帮助 编写一个controllerAdvice,您可以在其中捕获此类异常。捕获后返回异常,不管您想返回什么消息,但是如果我想要有多个字段,可能很难做到。嗯。。。似乎是一个很好的解决方案,但如何实施呢?这个方法放在哪里?进入@Configuration
bean?正如您所见,我将此方法作为静态方法。您可以执行相同的操作,并从Utils项目/公共模板包加载它。这将帮助您多次调用它。你可以像-ClassName一样叫它。getOvalViolations(obj);好的,但我不知道,为什么应用程序会以不正确的顺序抛出错误。此解决方案很好,但我的错误顺序不正确。您应该尝试使用TreeSet来维持顺序。如果您对答案感到满意,请打勾。