Java 嵌套类列表的Spring验证

Java 嵌套类列表的Spring验证,java,spring,validation,spring-validator,Java,Spring,Validation,Spring Validator,如本文所述,我已经实现了对自定义类列表的验证。作为参考,我的代码如下 class TopDtoForm { @NotEmpty private String topVar; private List<DownDto> downVarList; //getter and setter } class DownDto { private Long id; private String name; //getter and setter } @Compone

如本文所述,我已经实现了对自定义类列表的验证。作为参考,我的代码如下

class TopDtoForm {
  @NotEmpty
  private String topVar;
  private List<DownDto> downVarList;
  //getter and setter
}

class DownDto {
  private Long id;
  private String name;
  //getter and setter
}

@Component
public class TopDtoFormValidator implements Validator {
  @Override
  public boolean supports(Class<?> clazz) {
    return TopDtoForm.class.equals(clazz);
  }

  @Override
  public void validate(Object target, Errors errors) {
    TopDtoForm topDtoForm = (TopDtoForm) target;
    for(int index=0; index<topDtoForm.getDownVarList().size(); index++) {
        DownDto downDto = topDtoForm.getDownVarList().get(index);
        if(downDto.getName().isEmpty()) {
            errors.rejectValue("downVarList[" + index + "].name", "name.empty");
        }
    }
  }
}
class-TopDtoForm{
@空空如也
私有字符串topVar;
私有列表;
//接二连三
}
下课{
私人长id;
私有字符串名称;
//接二连三
}
@组成部分
公共类TopDtoFormValidator实现验证器{
@凌驾
公共布尔支持(类clazz){
返回TopDtoForm.class.equals(clazz);
}
@凌驾
公共无效验证(对象目标、错误){
TopDtoForm TopDtoForm=(TopDtoForm)目标;

对于Spring MVC中的(int index=0;index),只需在列表的顶部用
@Valid
注释,并将
@NotEmpty
添加到
DownDto
。Spring将验证它:

class TopDtoForm {
  @NotEmpty
  private String topVar;
  @Valid
  private List<DownDto> downVarList;
  //getter and setter
}

class DownDto {
  private Long id;
   @NotEmpty
  private String name;
  //getter and setter
}

还考虑从<代码> @ NavTime<代码>转换为<代码> @ NoBLUT,也检查空白字符(空格、制表符等)。

您是否使用
@Valid
注释在Spring MVC应用程序中验证它?如果是,只需在
TopDtoForm
中使用
@Valid
注释您的列表,并将
@NotEmpty
添加到
DownDto
。Spring将只验证它fine@RequestMapping(value=“/submitForm.htm”,method=RequestMethod.POST)public@ResponseBody字符串存储格式(@Valid@modeldattribute(“topDtoForm”)topDtoForm topDtoForm,BindingResult结果){..}
@RequestMapping(value = "/submitForm.htm", method = RequestMethod.POST) public @ResponseBody String saveForm(@Valid @ModelAttribute("topDtoForm") TopDtoForm topDtoForm, BindingResult result) {}