2012-07-23 72 views
0

我有一個相當複雜的大ModelTask。在這個對象中,我有一些沉重的自定義邏輯和日期時間轉換,所以我決定爲表單做一個POJO,因爲我需要自定義驗證/轉換。但是如何將這個POJO綁定回Model如何應用自定義邏輯並將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; 
} 

是否有cleaner辦法做到這一點?我認爲我做錯了。

+0

看來我的權利。 – 2012-07-23 20:46:38

+0

您的方法看起來更清潔,因爲先進的映射Dozer [http://dozer.sourceforge.net/]是可用的最佳選擇之一。 – jittakal 2012-07-26 05:26:17

回答

0

由於在wiki上提到:https://github.com/playframework/Play20/wiki/JavaForms 自定義的POJO與validate方法是最好的,正確的人使用:

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; 
    } 
} 
相關問題