Play! framework - handle a POST request

http, java, playframework-2.0, web, web-development-server

Solution

If it's `POST` form, you don't need to declare params in the `route`:

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:

@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

Problem

this is the route to handle the login POST request: ``` POST /login/submit controllers.Users.loginSubmit(user : String, password : String) ``` this is the 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: - what should be the value of action? is it "login/submit"? - how do you pass this form to be handled in the loginSubmit function? thanks

Original source

Related problems