У меня есть несколько групповых проверок в 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){
}
Как я могу узнать в классе валидатора, какая группа в настоящее время проверяет?
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;
}
}
Мне нужно выполнить проверки с членами в соответствии с текущей проверкой группы, например, если группа DatosGenerales проверяет, используйте только членов, связанных с ней.
initialize
), или группа, которая в настоящее время запрашивается/проверяется вызовомValidator.validate
? В случае последнего это невозможно. Концепция валидаторов и групп ограничений ортогональна. Каков ваш вариант использования? Вы хотите написать ограничение на уровне класса. Ваш код кажется неполным. - person Hardy   schedule 16.02.2016