2017-05-17 68 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

有時候,如果你知道去哪裏看,生活會變得如此簡單。謝謝。 –

相關問題