我提交此數據通過Ajax(POST)添加Child實體:Spring MVC的:如何獲取BindingResult錯誤域的嵌套對象
(見這個問題對實體類定義的底部)
name = "Child Name"
parent.id = 3
一切都好。新的子實體已成功保存。
但如果不包括parent.id
(僅name
設置)
name = "Child Name"
驗證結果返回該JSON(使用POST方法提交):
"errors":{"parent":"may not be null"}
注意"parent"
財產那個JSON。它應該返回parent.id
而不是parent
。
由於客戶端腳本(HTML)上的字段名稱爲"parent.id"
而不是"parent"
,所以會導致問題。
任何建議如何退貨parent.id
而不是parent
??
下面是處理方法:
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public Map<String, ?> add(@Valid Child child, BindingResult result) {
Map<String, ?> out = new LinkedHashMap<String, ?>();
if(result.hasErrors()){
Map<String, String> errors = new LinkedHashMap<String, String>();
for (FieldError error : result.getFieldErrors()) {
errors.put(error.getField(), error.getDefaultMessage());
}
out.put("success", false);
out.put("errors", errors);
return out;
} else {
out.put("success", true);
}
return out;
}
這裏是實體類:
class Child {
private int id;
@NotNull
@Size(min = 5)
private String name;
@NotNull
private Parent parent;
//getter and setter methods
}
class Parent {
private int id;
@NotNull
private String name;
//getter and setter methods
}
謝謝。
在控制器中使用帶有「驗證組」的@Validated註釋http://beanvalidation.org/1.0/spec/#validationapi-validatorapi-groups – 2013-03-19 16:24:57