Spring MVC で Hibernate Validator を使用していますが、複数選択 (ManyToMany 関係) に 1 つの問題があります。私の基本クラスは Project です。プロジェクトには、特に次のフィールドがあります: name (String)、User(ManyToOne)、regions(ManyToMany)
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
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 が入力され、ユーザーが選択されていますが、地域の複数選択が空です。
さらに興味深いことに、オブジェクトが「編集」フォームでデータベースに保持されている場合、複数選択が適切に入力されます。