@Target属性值必须是类文字
问题描述:
我正在使用Spring和Hibernate处理我的第一个项目,并且我想为IP地址创建验证器。@Target属性值必须是类文字
要创建项目我使用IntelliJ。当我进入这样的代码我上@Target
注释Attribute value must be a class literal
我不明白这是什么注释必须做一个错误,但如果我不断收到此错误,将无法正常工作。
我看过有关自定义约束的文档http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/#validator-customconstraints-simple,我已经看过几个*页面,但是我无法解决这个错误。
import org.hibernate.annotations.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import static java.lang.annotation.ElementType.FIELD;
/**
* Created by johan on 17-5-17.
*/
@Target({ FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = IpAddressValidator.class)
public @interface IpAddress{
String message() default "{ipAddress.invalid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
我需要做些什么才能使它工作?
答
您使用了错误的@Target
。您的意思是使用java.lang.annotation.Target
,但导入org.hibernate.annotations.Target
。将第一次导入更改为import java.lang.annotation.Target
,它应该可以正常工作。
+0
有时候,如果你知道去哪里看,生活会变得如此简单。谢谢。 –
也许'FIELD.class'? – litelite
@litelite Nope,已经试过了。然后我收到一条消息'Unknown class:FIELD' –
['FIELD'](https://docs.oracle.com/javase/7/docs/api/java/lang/annotation/ElementType.html#FIELD)是一个全球常数,而不是一类。 – litelite