1

ヘッド、メニュー、フッターを含むビューテンプレートがあります(このファイルをメインテンプレートと呼びます)。このテンプレートは、コンテンツを含む他のページから呼び出されます。メニューにログインするためのフォームを追加することにしました。私の最初のアイデアは、コントローラーを介してパラメーターごとにメインテンプレートにレンダリングされるビューファイルからフォームを渡すことでしたが、すべてのページで毎回ログインフォームを表示する必要がないため、これは私の解決策ではありません。

私には2つの解決策がありますが、どちらにも問題があります。

  1. フォームと入力のヘルパーを使用してメインテンプレートにフォームを作成し、純粋なhtmlを使用してボタンを作成しました

    @helper.form(routes.Application.loginPosted,'class -> "navbar-form pull-right"){                                
    <input class="span2" type="text" placeholder="email" name="email">
    <input class="span2" type="password" placeholder="passwd" name="passwd">
    <button type="submit" class="btn btn-primary">Login</button>
    }
    

    コントローラーでDynamicFormとして処理し、検証を容易にするためのモデルを表すフォームに変換する必要があります

    DynamicForm requestData = form().bindFromRequest();
    Form<User_Login> loginFormFilled = form(User_Login.class);
    loginFormFilled.fill(new User_Login(requestData.get("email"), requestData.get("passwd")));
    

    しかし、loginFormFilled.get()。email(およびpasswdも)は常に空白であり、その理由がわかりません。

  2. モデル表現としてメインテンプレートにフォームを作成したかったのですが、コンパイルされるコードを記述できません(logFormに問題があることはわかっていますが、まだ多くの組み合わせを試しましたが、有効なフォームを作成できません)

    @val logForm = new Form[User_Login]
    @helper.form(routes.Application.loginPosted,'class -> "navbar-form pull-right"){
    @helper.inputText(
            logForm("email")
    )
    @helper.inputPassword(
            logForm("passwd")
    )
    <button type="submit" class="btn btn-primary">Login</button>
    }
    
4

1 に答える 1

1

一度にそれを行うことができます(そしておそらくそれがあなたにとっての解決策です)DynamicFormForm<User_Login>

public static Result loginApproach(){
    Form<User_Login> loginForm = form(User_Login.class).bindFromRequest();

    String formToString =
            loginForm.get().email + " with pass: " + loginForm.get().passwd;

    return ok(formToString);
}
于 2013-02-17T22:14:46.703 に答える