From the error message, it appears that I have multiple group conversions, but in reality, I only have one
I have a simple Spring Boot project
import jakarta.validation.Valid;
import jakarta.validation.groups.ConvertGroup;
import jakarta.validation.groups.Default;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
This is my JavaBean class
@ NotBlank and @ Size were set for field01 and field respectively, and groups were established
public class MyTestBean {
@NotBlank(groups = {NotBlankCheck.class})
private String field01;
@Size(max = 3, min = 0 ,groups = {SizeCheck.class})
private String field02;
public String getField01() {
return field01;
}
public void setField01(String field01) {
this.field01 = field01;
}
public String getField02() {
return field02;
}
public void setField02(String field02) {
this.field02 = field02;
}
}
This is my model, using @ Valid for testBean01 and testBean02
All types are MyTestBean
ConvertGroup has been set up, hoping to perform NotBlank check only on field01 for testBean01 and Size check only on field02 for testBean02
public class MyModel {
interface Action01{
}
@Valid
@ConvertGroup.List({
@ConvertGroup(from=Default.class,to=NotBlankCheck.class)
})
private MyTestBean testBean01;
@Valid
@ConvertGroup.List({
@ConvertGroup(from=Default.class,to=SizeCheck.class)
})
private MyTestBean testBean02;
public MyTestBean getTestBean01() {
return testBean01;
}
public void setTestBean01(MyTestBean testBean01) {
this.testBean01 = testBean01;
}
public MyTestBean getTestBean02() {
return testBean02;
}
public void setTestBean02(MyTestBean testBean02) {
this.testBean02 = testBean02;
}
}
This is my Controller
@Controller
@RequestMapping("/")
public class MyController {
@ModelAttribute
public MyModel setUpForm() {
MyModel myModel = new MyModel();
MyTestBean bean01 = new MyTestBean();
bean01.setField01("");
bean01.setField02("abcdef");
MyTestBean bean02 = new MyTestBean();
bean02.setField01("");
bean02.setField02("abcdef");
myModel.setTestBean01(bean01);
myModel.setTestBean02(bean02);
return myModel;
}
@GetMapping(value = "test")
public String test(@Validated MyModel myModel, BindingResult result) {
if (result.hasErrors()) {
return "null";
}
return "success";
}
}
But when I accessed the controller, an error occurred,Regardless of the situation, I will encounter this error when using @ ConvertGroup.List, even if I delete other @ ConvertGroups and only keep one
jakarta.validation.ConstraintDeclarationException: HV000124: Found multiple group conversions for source group jakarta.validation.groups.Default: com.example.validatedemo2.NotBlankCheck.
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getGroupConversions(AnnotationMetaDataProvider.java:567) ~[hibernate-validator-8.0.1.Final.jar:8.0.1.Final]
at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getGroupConversions(AnnotationMetaDataProvider.java:547) ~[hibernate-validator-8.0.1.Final.jar:8.0.1.Final]
But when I don't use List, but instead use @ ConvertGroup, everything works fine..But I do need to use List
@Valid
@ConvertGroup(from=Default.class,to=NotBlankCheck.class)
private MyTestBean testBean01;
@Valid
@ConvertGroup(from=Default.class,to=SizeCheck.class)
private MyTestBean testBean02;
Is there a misunderstanding about my use of @ConvertGroup.List? Or does he have some problems with himself
validatedemo2.zip