Java 玩框架-处理POST请求

Java 玩框架-处理POST请求,java,http,web,playframework-2.0,web-development-server,Java,Http,Web,Playframework 2.0,Web Development Server,这是处理登录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 typ

这是处理登录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>



我有两个问题:

  • 行动的价值应该是什么?是“登录/提交”吗
  • 如何通过loginSubmit函数传递要处理的表单
    谢谢

    如果是
    POST
    表单,您不需要在
    路径中声明参数

    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>
    
    控制器:

    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...");
    }
    
    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的模板中创建表单,以便执行以下操作:

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

    }

    在Play Framework 2.5.x版中使用大型和/或预先填充的表单时,它们特别有用,您应该使用

    您可以在这里找到示例:

    进口:

    import play.data.DynamicForm;
    import play.data.Form;
    
    import play.data.DynamicForm;
    import play.data.FormFactory;
    
    注入:

    @Inject FormFactory formFactory;
    
    控制器:

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

    它也适用于Scala吗?对于我来说,不能使用POST,我必须切换以获取请求,因为对象请求中没有任何内容获取表单对我来说不适用于“form().bindFromRequest();“Got to use”form.form().bindFromRequest();“如图所示,答案是为Play 2.0.x编写的,在2.1.x中,团队对其进行了重构,无论如何,这不是问题,你可以使用适当的导入<代码>导入静态play.data.Form.Form