Play 2.0 framework - POST parameters

落爺英雄遲暮 提交于 2019-12-19 19:34:33

问题


I'm trying to POST parameters to Action, and wrote in the routes:

# Home page
GET    /                         controllers.Application.index()

POST   /login/name:/password:    controllers.Application.login(name, password)

and I have an Action

public static Result login(String name, String password) {
    return ok(name + " "  + password);
}

my form is

<form action="/login" method="post">

    <input name="name" type="text" id="name">
    <input name="password" type="password" id="password">
    <input type="submit" value="Login">

</form>

And it doesn't work

For request 'POST /login' [Missing parameter: name]

What am i doing wrong?


回答1:


Simply change the route to the following:

POST   /login    controllers.Application.login(name, password)

By NOT including the dynamic names (:name and :password) in the routing path, the assumption is that the variables come from the request (IE: your html inputs)

The error you are getting indicates that name and password do not appear in the url path... which is correct because the path you specified in your routes indicates the path should look something like this:

/login/myname/mypassword

Please check http://www.playframework.org/documentation/2.0.1/JavaRouting and look at the section called "Call to action generator method"




回答2:


your route should not include dynamic parts (name, password) since the data is in the body and not the url




回答3:


Though an old post, but if anyone new comes to the question. We should not add parameters, when you are using post, also if you did use parameters, it would be GET /login/:name/:password controllers.Application.login(name: String, password: String)

For post, don't add parameters and bind it to a case class inside the controllers and access the variables.



来源:https://stackoverflow.com/questions/11007957/play-2-0-framework-post-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!