【发布时间】:2012-02-20 04:17:21
【问题描述】:
我提交此数据以通过 Ajax (POST) 添加子实体:
(实体类定义见本题底部)
name = "Child Name"
parent.id = 3
一切正常。新的子实体已成功保存。
但如果不包含parent.id(仅设置name)(使用POST方法提交)
name = "Child Name"
验证结果返回这个 JSON:
"errors":{"parent":"may not be null"}
注意该 JSON 中的 "parent" 属性。它应该返回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
}
谢谢。
【问题讨论】:
标签: json validation data-binding spring-mvc