2016-12-11 59 views
1

試圖遷移這個Play 2.5 Java play-authenticate-usage項目到斯卡拉 play-authenticate-usage-scala我碰到了Forms declaration and handling的問題。在Java版本中,它們被定義(至少在該項目中)爲控制器類內的靜態類,例如Play 2.5 Scala定義表單的標準方法是什麼?

public class Account extends Controller { 
    public static class PasswordChange { 
    @MinLength(5) 
    @Required 
    public String password; 

    @MinLength(5) 
    @Required 
    public String repeatPassword; 

    public String validate() { 
     if (password == null || !password.equals(repeatPassword)) { 
     return Messages.get("playauthenticate.change_password.error.passwords_not_same"); 
     } else { 
     return null; 
     } 
    } 
    // ... 
    } 

    // ... 
    private final Form<Account.PasswordChange> PASSWORD_CHANGE_FORM; 
} 

PasswordChange類然後從靜態觀點和其它類引用。我發現在Scala中複製的唯一方法是定義控制器帳戶伴隨對象,例如

/** 
    * Account companion object 
    */ 
object Account { 
    case class PasswordChange(password: String, repeatPassword: String) 
    val PasswordChangeForm = Form(
    mapping(
     "password" -> text(minLength = 5), 
     "repeatPassword" -> text(minLength = 5) 
    )(PasswordChange.apply)(PasswordChange.unapply) 
) 
} 

這是標準做法還是?有沒有更好的方法來做到這一點?對我來說,定義控制器伴侶對象感覺就像是一種黑客攻擊。

回答

相關問題