简体   繁体   English

玩! framework - 处理POST请求

[英]Play! framework - handle a POST request

this is the route to handle the login POST request: 这是处理登录POST请求的路由:

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

this is the login.scala.html: 这是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>

I got two questions: 我有两个问题:

  1. what should be the value of action? 什么应该是行动的价值? is it "login/submit"? 是“登录/提交”?
  2. how do you pass this form to be handled in the loginSubmit function? 如何传递此表单以在loginSubmit函数中处理?

thanks 谢谢

If it's POST form, you don't need to declare params in the route : 如果是POST表单,则不需要在route声明params:

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

Template: 模板:

<!-- 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: 进口:

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

Controller: 控制器:

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...");
}

Template form helpers 模板表单助手

There are also form template helpers available for creating forms in Play's template so the same can be done as: 还有表单模板助手可用于在Play模板中创建表单,因此可以这样做:

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

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

They are especially useful when working with large and/or pre-filled forms 在处理大型和/或pre-filled形式时,它们特别有用

In Play Framework version 2.5.x Form.form() is deprecated and you should use inject a FormFactory 在Play Framework版本2.5.x 中,不推荐使用Form.form() ,您应该使用注入FormFactory

Here you can find example: The method form(Class) from Form class is deprecated in Play! 在这里您可以找到示例: 在Play类中不推荐使用Form类中的方法表单(Class)! Framework 骨架

Import: 进口:

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

Inject: 注入:

@Inject FormFactory formFactory;

Controller: 控制器:

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...");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM