Play framework 2.5 Json post 请求绑定器
Play framework 2.5 Json post request binder
我有一个 class 具有以下内容:
public class NoteForm {
public Integer id;
@Constraints.Required
public Integer userId;
@Constraints.Required
public String note;
// cant get any of the following to work
public Int[] tags;
public String[] tags;
public List<int> tags;
}
还有这样的控制器操作:
@BodyParser.Of(BodyParser.Json.class)
public Result updateNote(){
Form<NoteForm> noteForm = NOTE_FORM.bind(request().body().asJson());
//also have tried the following
//Form<NoteForm> noteForm = NOTE_FORM.bindFromRequest();
if(noteForm.hasErrors()){
return badRequest(noteForm.errorsAsJson());
}else{
noteService.saveNote(noteForm.get());
return jsonResult(ok(Json.toJson("Save Succeeded")));
}
}
当我从 $.ajax post JSON 使用如下所示的 json 对象时:
{
"id":"1",
"userId":"1",
"note":"adsfadsfdsaaf",
"tags":["5","6"]
}
我无法绑定表单的标签 属性,我做错了什么?
我目前正在通过使用以下代码解决这个问题,但我无法使用表单助手来使用 Play 框架验证:
NoteForm note = Json.fromJson(json, NoteForm.class);
我能够使用以下方法完成这项工作:
public List<Integer> tags;
并像这样绑定表单:
Form<NoteForm> noteForm = formFactory.form(NoteForm.class).bind(request().body().asJson());
绑定后记录 noteForm
给我这个(使用您的输入):
Form(of=class models.NoteForm, data={note=adsfadsfdsaaf, id=1, tags[1]=6, userId
=1, tags[0]=5}, value=Optional[models.NoteForm@5cd20029], errors={})
我有一个 class 具有以下内容:
public class NoteForm {
public Integer id;
@Constraints.Required
public Integer userId;
@Constraints.Required
public String note;
// cant get any of the following to work
public Int[] tags;
public String[] tags;
public List<int> tags;
}
还有这样的控制器操作:
@BodyParser.Of(BodyParser.Json.class)
public Result updateNote(){
Form<NoteForm> noteForm = NOTE_FORM.bind(request().body().asJson());
//also have tried the following
//Form<NoteForm> noteForm = NOTE_FORM.bindFromRequest();
if(noteForm.hasErrors()){
return badRequest(noteForm.errorsAsJson());
}else{
noteService.saveNote(noteForm.get());
return jsonResult(ok(Json.toJson("Save Succeeded")));
}
}
当我从 $.ajax post JSON 使用如下所示的 json 对象时:
{
"id":"1",
"userId":"1",
"note":"adsfadsfdsaaf",
"tags":["5","6"]
}
我无法绑定表单的标签 属性,我做错了什么?
我目前正在通过使用以下代码解决这个问题,但我无法使用表单助手来使用 Play 框架验证:
NoteForm note = Json.fromJson(json, NoteForm.class);
我能够使用以下方法完成这项工作:
public List<Integer> tags;
并像这样绑定表单:
Form<NoteForm> noteForm = formFactory.form(NoteForm.class).bind(request().body().asJson());
绑定后记录 noteForm
给我这个(使用您的输入):
Form(of=class models.NoteForm, data={note=adsfadsfdsaaf, id=1, tags[1]=6, userId
=1, tags[0]=5}, value=Optional[models.NoteForm@5cd20029], errors={})