Java 类级bean验证中的当前组
我在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
@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;
}