播放获取json请求参数

Play get json request parameters

我正在使用 jQuery Datatable 插件,我想在我的控制器操作中获取发送到服务器的默认参数,如 link.

中所示

这是我的ajax请求代码

$(document).ready(function() {
        $('#example').DataTable( {
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "getTable",
                "type": "POST"
            }
        } );
    } );

这是我的控制器操作代码

public Result ajaxDisplayTable() {
        Logger.info("This is just another method for ajax post action call...");
        String userAgent = request().getHeader("User-Agent");
        Logger.info("user agent =  "+ userAgent);
        RequestBody body = request().body();
        Logger.info("bare body = "+ body);
        Logger.info("json ... "+ body.asJson());
        Logger.info("body as json = " + body.asText());
        return ok("Got json: " );
}

请求被发送到服务器并且打印了调用正文的操作方法,但是 body.asJson() 和 body.asText() 始终为空,如下图所示。

并且如下图所示

请求参数以application/json的形式传递,请纠正我如果我错了,那么为什么body.asJson()为null,如何在action方法中获取所有请求参数?我正在使用 Play 2.4.2 版本(Damiya)。

您的请求已作为 application/x-www-form-url-encoded 发送,请参阅 Content-type header。您需要使用 body.asFormUrlEncoded() 而不是 body.asJson()

public Result ajaxDisplayTable() {
    RequestBody body = request().body();
    final Map<String, String[]> values = body.asFormUrlEncoded();
    final String valDraw = values.get("draw")[0];
}

有关详细信息,请参阅 Body parsers