【问题标题】:Play 2.0 framework - POST parametersPlay 2.0 框架 - POST 参数
【发布时间】:2012-06-16 00:03:09
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • 能否请您编辑问题并输入表单的代码。
  • 作为盲目猜测(此处为 PHP 开发人员),/login/name:/password: 定义您需要提供两个附加参数.. 缺少一个。这就是错误所说的。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    只需将路线更改为以下:

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

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

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

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

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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 2012-02-20
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多