我在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组正在验证,则仅使用与其相关的成员。
答案 0 :(得分:0)
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;
}