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

1 回答 1

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);
}
于 2013-02-17T22:14:46.703 回答