如何在 Play Framework 中显示表单数据

How to display form data in Play Framework

我使用表单创建了一个 Play 应用程序。代码如下所示。我的要求是我将在我的应用程序控制器中的索引方法中设置表单值。我需要在 index.scala.html 用户名字段中显示此值。如何在表单中显示用户名值。

index.scala.html

@(login: model.com.ranga.Login)

<!DOCTYPE html>
<html>
<head>
    <title>Login Form example</title>
</head>
<body>
    <div align="center" style='background: #80c846;'>
        <div>Login Form</div>
        <hr />  
        <form method="post" action="@routes.Application.login()">
            <table>
                <tr>
                    <td>Username</td>
                    <td><input type="text" name="username" placeholder="Enter Username.."></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="text" name="password" placeholder="Enter Password.."></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit"></td>
                </tr>
            </table>

        </form>
    </div>
</body>
</html>

Login.java

    package model.com.ranga;

    public class Login {

    public String username;
    public String password;

    public Login() {
        super();
    }

    public Login(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Login [username=" + username + ", password=" + password + "]";
    }   
}

Application.java

package controllers;

import model.com.ranga.Login;
import play.*;
import play.data.DynamicForm;
import play.data.Form;
import play.mvc.*;
import views.html.*;

public class Application extends Controller {

    public Result index() {
        Login login = new Login();
        login.setUsername("Ranga");
        return ok(index.render(login));
    }

    public Result login() {
        Form<Login> loginForm = Form.form(Login.class).bindFromRequest();       
        Login login = loginForm.get();
        System.out.println(login);      
        return ok(index.render(login));
    }
}

index() 方法我正在设置用户名。我需要在用户名字段中显示此值。如何设置这个值。

您选择不按照 play 框架建议的创建模型的方式创建模型有什么原因吗? (扩展 ebean 模型并让它处理所有样板代码) 这也是游戏框架中记录较好的部分之一。查看以下链接

为了回答您的问题,您希望将表单对象传递给绑定到登录对象的 Scala 模板。然后您可以从表单对象中提取值。

答案是:

<input type='text' name='username' value='@login.getUsername()'></input>