5

我正在尝试将参数发布到 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]

我究竟做错了什么?

4

3 回答 3

3

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

于 2012-06-13T04:37:19.723 回答
3

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

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

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

您收到的错误表明名称和密码未出现在 url 路径中......这是正确的,因为您在路由中指定的路径表明该路径应如下所示:

/登录/我的名字/我的密码

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

于 2012-09-13T20:07:00.740 回答
0

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

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

于 2018-04-05T07:15:01.743 回答