在主视图模板的头部创建表单

时间:2013-02-17 20:41:52

标签: java playframework-2.1

我有一个包含头部,菜单,页脚的视图模板(我将此文件称为主模板)。此模板由具有某些内容的其他页面调用。我决定添加登录菜单的表格。我的第一个想法是关于从视图文件传递表单,它通过控制器通过参数呈现到主模板中,但我不需要每次都在每个页面上显示登录表单,所以这不是我的解决方案。

我有两个解决方案,但两者都有问题:

  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>
    }
    

1 个答案:

答案 0 :(得分:1)

您不需要使用DynamicForm绑定来填充Form<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);
}