2017-05-17 69 views
0

我正在使用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,我已经看过几个Stackoverflow页面,但是我无法解决这个错误。

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 {}; 
} 

我需要做些什么才能使它工作?

+0

也许'FIELD.class'? – litelite

+0

@litelite Nope,已经试过了。然后我收到一条消息'Unknown class:FIELD' –

+0

['FIELD'](https://docs.oracle.com/javase/7/docs/api/java/lang/annotation/ElementType.html#FIELD)是一个全球常数,而不是一类。 – litelite

回答

1

您使用了错误的@Target。您的意思是使用java.lang.annotation.Target,但导入org.hibernate.annotations.Target。将第一次导入更改为import java.lang.annotation.Target,它应该可以正常工作。

+0

有时候,如果你知道去哪里看,生活会变得如此简单。谢谢。 –

相关问题