我有一个相当复杂且大Model
的{{1}}。在这个对象中,我有一些沉重的自定义逻辑和日期时间转换,所以我决定为表单创建一个Task
,因为我需要自定义验证/转换。但是如何将这个POJO绑定回POJO
?
这是正确的方法:
Model
是否有public static Result save() {
Form<forms.Task> taskForm = form(forms.Task.class).bindFromRequest();
if (taskForm.hasErrors()) {
return badRequest(views.html.tasks.create.render(taskForm));
}
// bind the formValues to our model
Task newTask = form(Task.class).bind(taskForm.data()).get();
newTask.createdBy = User.getLoggedInUserByAlias(session().get("user"));
newTask.save();
return GO_TO_OVERVIEW;
}
方法可以做到这一点?我认为我做错了。
答案 0 :(得分:0)
如维基上所述:https://github.com/playframework/Play20/wiki/JavaForms
使用validate
方法的自定义POJO是最好和最正确的方法:
public class User {
@Required
public String email;
public String password;
public String validate() {
if(authenticate(email,password) == null) {
return "Invalid email or password";
}
return null;
}
}