java - 如何在 Play Framework 中使用 POST 参数?

标签 java playframework-2.0

我正在尝试使用 JavaScript 路由发出 POST 请求。在路由文件中:

POST /comments controllers.Clients.addComment(text: String, client: Int)
GET /assets/javascripts/routes controllers.Application.javascriptRoutes()

在页面上:

jsRoutes.controllers.Clients.addComment(args.text, @client.id).ajax(...);

但是它创建了请求

POST http://localhost:9000/comments?text=qwe&client=1 HTTP/1.1

如何让它在 POST 主体中传递参数而不是请求字符串?

最佳答案

看看ajax() documentation - 也就是这样的例子:

$.ajax({
    type: "POST",
    url: "some.php",
    data: { name: "John", location: "Boston" }
});

作为Play JavaScript 路由已经定义了 url和请求方法( type ),你只需要添加 data (当然你不需要将它们指定为括号中的参数)

jsRoutes.controllers.Clients.addComment().ajax(
    data: {
      client: @client.id,
      text: args.text
    }
);

您也可以只向给定的客户端发送文本(由 URL 决定(它可以是 POSTPUT 看起来更好 :)):

PUT /comments/:client     controllers.Clients.addComment(client: Int)

在 View 中:

jsRoutes.controllers.Clients.addComment(@client.id).ajax(
    data: { text: args.text }
);

因此它将对 http://domain.tld/comments/123 执行 PUT 请求和 text将在 form() 中提供因为它是用 POST 发送的:

public static Result addComment(int client) {
    String receivedText = form().bindFromRequest().get("text");
    // save it to DB ...
    return ok( "Added comment: "+ receivedText+ ". for client id: " + client);
}

关于java - 如何在 Play Framework 中使用 POST 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835440/

相关文章:

java - 玩java框架在应用程序启动时初始化变量

scala - Play 框架 scala 应用程序中的数据库事务 (anorm)

java - 安卓不创建文件

java - 使用函数从 Java 8 中总和为给定数字的数组中查找一对整数

java - 使用 Play 2.0.4 设置 oracle 数据库

java - Play 框架中的 Gzip 分块响应

twitter-bootstrap - 在 Play 2.x 中覆盖 WebJar Assets

java - 单元测试后的回滚顺序

java - OGNL map 选择

java - Android - 设置同步适配器时启用自动同步