2016-04-01 20 views
0

Doğrulama alt sınıfa bağlı olarak Hazırda Bekletme Eki (w/i Yay önyükleme) ile özel bir kısıtlama oluşturabilir miyim? Örnek:Hazırda Bekletme Özel Kısıtlaması temel sınıfına bağlıdır

@GroupSequence({ BasicEngineChecks.class, ExtendedEngineChecks.class }) 
public class Engine { 
    @NotEmpty(groups = BasicEngineChecks.class) 
    private String name; 

    @NotNull(groups = BasicEngineChecks.class) 
    private int power; 

    @NotNull(groups = ExtendedEngineChecks.class) 
    private int color; 

    // ... 
} 

özel bir şey yoktur:

grup arayüzleri:

public interface BasicEngineChecks { 
} 

public interface ExtendedEngineChecks { 
} 

Güncelleme örnek

public class Engine { 
    @NotEmpty 
    private String name; 
    @NotNull 
    private int power; 
    @NotNull // HERE I ONLY NEED VALIDATE IF THIS CLASS ARE ONE PROP FROM Car Class 
    private int color; 

    ... getter and setter 
} 

Here I have 2 classes, 

public class Car { 
    @NotEmpty 
    private String name; 
    @Valid 
    private Engine engine; 
    ... getter and setter 
} 

public class Bike { 
    @NotEmpty 
    private String name; 
    @Valid 
    private Engine engine; // HERE I DONT NEED TO VALIDATE THE COLOR 
    ... getter and setter 
} 

cevap

1

Sen @ConvertGroup kullanarak istediğini yapmak gerekir araba hakkında. Kaskad doğrulama sadece BasicEngineChecks değerlendiren BasicEngineChecks parçası yanı sıra Bike için ExtendedEngineChecks

public class Car { 
    @NotEmpty 
    private String name; 

    @Valid 
    private Engine engine; 

    // ... 
} 

biz açık dönüştürme yapmak tüm kısıtlamalar için tercüme varsayılan grubuna geçecek:

public class Bike { 
    @NotEmpty 
    private String name; 

    @Valid 
    @ConvertGroup(from = Default.class, to = BasicEngineChecks.class) 
    private Engine engine; 

    // ... 
} 
İlgili konular