我有一个具有嵌套属性的对象列表,并且在层次结构的底部,每个对象都有一个 CommonsMultipartFile 属性。
一个文件夹有一个Requisites列表,每个 Requisites 都有一个页面列表
这些是 bean 定义,每个都在自己的文件中:
Page {
private CommonsMultipartFile attributes;
// Getter & Setter
}
Requisite {
private List<Page> pages;
// Other properties and Getters & Setters
}
Folder {
private List<Requisite> requisites;
// Getter & Setter
}
然后我在 Controller 方法中将一个 Folder 对象添加到我的 modelMap 中:
@RequestMapping(value = "loadFiles", method = RequestMethod.GET)
public String initFiles(ModelMap model, HttpServletRequest request) {
Folder folder = new Folder();
folder.setRequisites(requisitesModel.getRequisitesFromDB());
model.addAttribute("folder", folder);
return "loadFiles";
}
此时,模型属性“文件夹”有一个 Requisite 对象列表,其中初始化了各种属性,但是页面 (List <Page>
) 在所有这些对象中都是空的。这种方法工作正常,允许用户加载一堆文件,并且发布请求按预期工作。
然后我添加了一个处理 MaxUploadSizeExceededException 的方法,并在resolveException方法中复制了上述控制器的行为。这是在总文件大小超过给定阈值时将用户重定向到相同的表单。
这是 resolveException 方法的定义:
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse
response, Object handler, Exception exception) {
ModelMap model = new ModelMap();
Folder folder = new Folder();
folder.setRequisites(requisitesModel.getRequisitesFromDB());
model.addAttribute("error", "The files exceed the maximum filesize");
model.addAttribute("folder", folder);
return new ModelAndView("loadFiles", model);
}
问题是,在这一个中,autoGrowNestedPaths 不起作用,因为立即抛出bean 类 [mypackage.Folder] 的 Invalid property 'requisites[0].pages[0]':无法访问索引属性路径'pages 中引用的属性的索引值[0]':返回 null。
我的理解是,默认情况下,spring 会为所有 Collection 类型自动增长嵌套路径,即使不使用 LazyList 或 AutopopulatingList。我的理解错了吗?我需要添加其他东西吗?