玩! 框架 - 处理POST请求(Play! framework - handle a POST

2019-07-31 03:07发布

这是处理登录POST请求的路径:

POST  /login/submit                 controllers.Users.loginSubmit(user : String, password : String)

这是login.scala.html:

<form method="post" action="???">
  <input type="text" name="username" /><br/>
  <input type="password" name="password" /><br/>

  <input type="submit" value="Login" />
</form>

我有两个问题:

  1. 什么应该是行动的价值? 它是“登录/提交”?
  2. 你如何通过这种形式在loginSubmit功能如何处理?

谢谢

Answer 1:

如果是POST形式,你并不需要在申报PARAMS route

POST  /login/submit           controllers.Users.loginSubmit()

模板:

<!-- syntax: @routes.ControllerName.methodName() -->
<form method="post" action="@routes.Users.loginSubmit()">
  <input type="text" name="username" /><br/>
  <input type="password" name="password" /><br/>

  <input type="submit" value="Login" />
</form>

进口:

import play.data.DynamicForm;
import play.data.Form;

控制器:

public static Result loginSubmit(){
    DynamicForm dynamicForm = Form.form().bindFromRequest();
    Logger.info("Username is: " + dynamicForm.get("username"));
    Logger.info("Password is: " + dynamicForm.get("password"));
    return ok("ok, I recived POST data. That's all...");
}

模板形式助手

也有表单模板助手可用于创建在游戏的模板形式,因此同样能为做到:

@helper.form(action = routes.User.loginSubmit()) {
    <input type="text" name="username" /><br/>
    <input type="password" name="password" /><br/>

    <input type="submit" value="Login" />
}

大和/或工作时,他们是特别有用的pre-filled表格



Answer 2:

在播放Framework版本2.5.X Form.form()已经过时 ,你应该使用注入FormFactory

在这里,你可以找到例子: 从Form类的方法形式(类)中扮演的是过时! 骨架

进口:

import play.data.DynamicForm;
import play.data.FormFactory;

注入:

@Inject FormFactory formFactory;

控制器:

public static Result loginSubmit(){
    DynamicForm dynamicForm = formFactory.form().bindFromRequest();
    Logger.info("Username is: " + dynamicForm.get("username"));
    Logger.info("Password is: " + dynamicForm.get("password"));
    return ok("ok, I recived POST data. That's all...");
}


文章来源: Play! framework - handle a POST request