ValidationMessages.properties中配置如下:
TEST = SSSSSSSSSSSSSSSS
自定义注解文件:
package com.atguigu.common.valid;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Constraint(validatedBy = ListValueConstraintValidator.class)
@Documented
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ListValue {
String message() default "{TEST}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int[] values() default {};
}
文件位置
然后我在entity里配置了这个自定义注解
@ListValue(values = {0, 1}, groups = {AddGroup.class, UpdateGroup.class})
private Integer showStatus;
但是在发送错误请求验证时,这个TEST没有解析出来
我也不知道什么原理- -但是在第一行上加了注释,就没问题了- -
# 这是第一行
Test=SSSSSS
@ListValue(values = {0, 1}, groups = {AddGroup.class, UpdateGroup.class},message = "{TEST}")
还有配置文件里不要加空格
你的自定义注解咋处理的,代码要贴出来
我跟源码跟到了最底层
在org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator的resolveParameter方法中
(ps:刚刚怀疑是不是配置文件全大写导致的,所以把TEST改成Test)
配置文件能正常读取,但是在标红的那一段代码中,
报错了,我在百度上搜,说这种错误是大小写的错误- -可是根本没有大小写写错啊