Spring引导验证-如何从字段中仅返回一个错误

Spring引导验证-如何从字段中仅返回一个错误,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

我想创建一个应用程序来验证用户提供的数据。这里有一个例子

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:“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来维持顺序。如果您对答案感到满意,请打勾。