0

したがって、私は2つの日付を記述して比較する必要があります。バリデーターをコードしています。それはいくつかのエラーがあり、ちょっと変わっているようです: 注釈クラス:ターゲットアノテーションはインポートされますが、列挙型の内部は認識されません。Hibernate Validator - 2つの日付を比較する - クラスレベルの制約

import java.lang.annotation.Documented; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

import javax.validation.Constraint; 
import javax.validation.Payload; 

@Target({ TYPE, ANNOTATION_TYPE }) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy = { ValidAfterDateValidator.class }) 
@Documented 
public @interface ValidAfterDate { 


String message() default "The End date should be after the starting date." ; 

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

Class<? extends Payload>[] payload() default { }; 
} 

ValidAfterDateValidator.class:

import javax.validation.ConstraintValidator; 
import javax.validation.ConstraintValidatorContext; 

import gestionprojet.java.entities.Project; 

public class ValidAfterDateValidator implements ConstraintValidator<ValidAfterDate, Project> { 

@Override 
public void initialize(ValidAfterDate constraintAnnotation) { 
} 

@Override 
public boolean isValid(Project projet, ConstraintValidatorContext context) { 
    if (projet == null) { 
     return true; 
    } 

    return projet.getDate_Debut().compareTo(projet.getDate_Fin()) > 0; 
} 

そしてここでは@ValidAferDateが許可されていません:

Project.class:

@ValidAfterDate 
public class Project { 

@Future 
@DateTimeFormat(pattern="dd/MM/YY") 
private Date date_Debut; 

@Future 
@DateTimeFormat(pattern="dd/MM/YY") 
private Date date_Fin; 
//Getters & Setters 
} 

すべてのヘルプは大歓迎です。おかげ

答えて

0

は、この:

@Target({ TYPE , ANNOTATION_TYPE }) 

に変更する必要があります

@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE }) 

とimporationは次のとおりです。

import java.lang.annotation.ElementType; 
関連する問題