0
我使用Hibernate验证与Spring MVC和我有一个问题与多选(在ManyToMany关系)。我的基类是Project。项目有(其中包括)字段:姓名(字符串),用户(多对一),区(多对多)Autopopulate多选与Hibernate验证
class Project {
.
private String name;
private User user;
private List<Region> regions
.
}
在控制器(POST行为),我有:
public String saveProject(
@Valid Project project,
BindingResult bindingResult,
ModelMap model) {
//send regions, users etc. to model
//errors
if(bindingResult.hasErrors()) {
System.out.println(project.getRegions().size());
//Printed size of regions is identical with selected
return "templates/project/form";
}
//no errors, save to database etc.
}
InitBinder:
@InitBinder
public void initBinder (WebDataBinder binder)
{
StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true);
binder.registerCustomEditor(String.class, stringtrimmer);
binder.registerCustomEditor(List.class, "regions",new CustomCollectionEditor(List.class){
@Override
protected Object convertElement(Object element) {
Region region = new Region();
if (element != null) {
Integer id = Integer.valueOf(element.toString());
region.setId(id);
}
return region;
}
});
在回报表格中,字段'name'id填写完毕,用户被选中,但区域多选是空。
更有趣的是,如果对象仍然存在于数据库中,那么在'编辑'表单中,多选是正确填写。