Java 类级bean验证中的当前组

Java 类级bean验证中的当前组,java,bean-validation,spring-validator,Java,Bean Validation,Spring Validator,我在bean中有一些组验证: @FichaValida(groups={Ficha.DatosGenerales.class, Ficha.Economia.class}) public class Ficha { public interface DatosGenerales{} public interface Documentos{} public interface Ubigeo{} public interface Economia{} @Not

我在bean中有一些组验证:

@FichaValida(groups={Ficha.DatosGenerales.class, Ficha.Economia.class})
public class Ficha {
    public interface DatosGenerales{}
    public interface Documentos{}
    public interface Ubigeo{}
    public interface Economia{}
    @NotEmpty(groups = {DatosGenerales.class})
    String apPrimer;

    @NotEmpty(groups = {DatosGenerales.class})
    String apSegundo;

    @NotEmpty(groups = {DatosGenerales.class})
    String preNombres;

    @NotEmpty(groups = {Documentos.class})
    String tiDocumento;

    @NotEmpty(groups = {Documentos.class})
    String nuDocumento;


    @NotEmpty(groups = {Ubigeo.class})
    String deDepartamento;

    @NotEmpty(groups = {Ubigeo.class})
    String deProvincia;

    @NotEmpty(groups = {Ubigeo.class})
    String deDistrito;


    @NotEmpty(groups = {Economia.class})
    String nuIngreso;

    @NotEmpty(groups = {Economia.class})
    String nuGasto;
    //members, setters and getters
}
这些方法包括:

@RequestMapping(value = "datos-generales.do", method = RequestMethod.POST)
public String datosGenerales(
        @Validated({Ficha.DatosGenerales.class}) Ficha ficha,
        BindingResult bindingResult){
}

@RequestMapping(value = "documentos.do", method = RequestMethod.POST)
public String documentos(
        @Validated({Ficha.Documentos.class}) Ficha ficha,
        BindingResult bindingResult){
}

@RequestMapping(value = "economia.do", method = RequestMethod.POST)
public String economia(
        @Validated({Ficha.Economia.class}) Ficha ficha,
        BindingResult bindingResult){

}
如何在validator类中知道当前正在验证哪个组

public class FichaValidator implements ConstraintValidator<FichaValida, Ficha> {

    private FichaValida fichaValida;

    public void initialize(FichaValida fichaValida) {
        this.fichaValida = fichaValida;
    }

    public boolean isValid(Ficha ficha, ConstraintValidatorContext constraintValidatorContext) {
        /*
        if(Ficha.DatosGenerales.class==...){
            //some validations
        }else if(Ficha.Economia.class==...){
            //some validations
        }
        */
        return true;
    }

}
公共类FichaValidator实现ConstraintValidator{
私人菲哈瓦利达菲哈瓦利达;
公共无效初始化(FichaValida FichaValida){
this.fichaValida=fichaValida;
}
公共布尔值有效(Ficha Ficha、ConstraintValidatorContext ConstraintValidatorContext){
/*
if(Ficha.DatosGenerales.class==…){
//一些验证
}else if(Ficha.Economia.class==…){
//一些验证
}
*/
返回true;
}
}

我需要根据当前组验证对成员进行验证,举例来说,如果DatosGenerales组正在验证,则只使用与其相关的成员。

this.fichaValida(FichaValidator的成员)初始化一次,每次验证时都具有相同的值,那么答案不起作用。您想要哪个组?正在验证的约束上指定的组(您确实可以通过
初始化
)或当前由
验证程序请求/验证的组。验证
调用?对于后者,这是不可能的。约束验证器和组的概念是正交的。您的用例是什么?是否要编写类级别约束。您的代码似乎不完整。
    public boolean isValid(Ficha ficha, ConstraintValidatorContext constraintValidatorContext) {
        if(Ficha.DatosGenerales.class==this.fichaValida.value()){
            //some validations
        }else if(Ficha.Economia.class==this.fichaValida.value()){
            //some validations
        }
        return true;
    }