Play 2.0框架 - POST参数

时间:2012-06-13 03:46:12

标签: model-view-controller playframework url-routing

我正在尝试将参数POST到Action,并在路线中写道:

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

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

我有一个动作

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

我的表格是

<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>

它不起作用

对于请求'POST /login' [Missing parameter: name]

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您的路线不应包含动态部分(名称,密码),因为数据位于正文中而不是网址

答案 1 :(得分:3)

只需将路线更改为以下内容:

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

通过在路由路径中不包含动态名称(:name和:password),假设变量来自请求(IE:您的html输入)

您收到的错误表明名称和密码没有出现在网址路径中...这是正确的,因为您在路线中指定的路径表明路径应如下所示:

/登录/ MYNAME /输入mypassword

请检查http://www.playframework.org/documentation/2.0.1/JavaRouting并查看名为“号召性用语生成器方法”的部分

答案 2 :(得分:0)

虽然是一个老帖子,但如果有新人提出这个问题。当你使用post时,我们不应该添加参数,如果你确实使用了参数,它也会     GET / login /:name /:password controllers.Application.login(name:String,password:String)

对于post,不要添加参数并将其绑定到控制器内的case类并访问变量。