Java 在Spring中使用基于注释的验证忽略自定义消息

Java 在Spring中使用基于注释的验证忽略自定义消息,java,spring,validation,Java,Spring,Validation,基本上,我已经创建了一个自定义注释跨字段验证,验证程序实现了ConstraintValidator @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = SomeValidator.class) @Documented public @interface SomeAnnotation { String message() default "{javax.validati

基本上,我已经创建了一个自定义注释跨字段验证,验证程序实现了
ConstraintValidator

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = SomeValidator.class)
@Documented
public @interface SomeAnnotation {
   String message() default "{javax.validation.constraints.NotNull.message}";

   Class<?>[] groups() default {};

   Class<? extends Payload>[] payload() default {};
}
(其他字段之间的唯一区别是节点数和返回字符串的方法调用,但由于我对变量路径没有问题,并且忽略了所有消息,因此我认为这与此无关。)

返回的JSON(稍加修改)示例:

{"fieldErrors":[{"path":"someField.id","message":"MyAnnotationClass.someEntity.someField.id"}]}

这是设置消息的错误方法还是缺少一些配置?

尝试检查BindingResults的错误,以查看使用了哪些路径并指定它们。问题是-我没有直接访问它的权限,验证是通过控制器方法中实体参数的@Valid annotation在内部处理的。这就是我决定使用自定义约束的原因之一。您可以将BindingResults作为参数添加到控制器的方法中,并在那里进行检查。我明白了,这是有道理的。我稍后再查。
{"fieldErrors":[{"path":"someField.id","message":"MyAnnotationClass.someEntity.someField.id"}]}