Java 正在使用JSON!框架控制器

Java 正在使用JSON!框架控制器,java,javascript,json,playframework,Java,Javascript,Json,Playframework,我试图使用我使用JavaScript创建的JSON数组,但该数组从未绑定到我的控制器中 下面是我用来调用控制器操作的JavaScript代码 $.post("/produits_ajax",{filterParams:[{name:"milk", value:"chevre"}, {name:"pate", value:"molle"}]}, function(data){ $('.dynamicContent').html(data); slideProducts(); // init

我试图使用我使用JavaScript创建的JSON数组,但该数组从未绑定到我的控制器中

下面是我用来调用控制器操作的JavaScript代码

$.post("/produits_ajax",{filterParams:[{name:"milk", value:"chevre"}, {name:"pate", value:"molle"}]},
function(data){
    $('.dynamicContent').html(data);
slideProducts();
// initialize scrollable
$(".scrollable").scrollable();

});
我的路由文件条目

POST        /produits_ajax       Application.produitsAjax
这是我在我的游戏中得到它的方式!控制器。我使用的是Play1.1,JsonArray来自com.google.gson.JsonArray

public static void produitsAjax(JsonArray filterParams) {
    if(filterParams != null)
        Logger.debug("Le Json: " + filterParams.toString());
    else
        Logger.debug("filterParams is null");

    render();
}
正如您可以想象的,我总是在控制台中得到“filterParams为null”(如果不是,我就不会写这个)

到目前为止,它非常基本,我只想将JS中生成的数组绑定到我的JsonArray。玩框架有很多文档,但由于某些原因,关于这个特定主题的文档很少

如果有人能对此有所了解,我们将不胜感激

您有两种选择:

  • 简单一点:将参数作为字符串传递,并在控制器中将其解析为Json
  • 复杂的一个:使用

您只需创建一个TypeBinder类来添加JsonObject绑定功能即可!。实际上,这在游戏1.2中很容易实现。下面是完整的课程:

@Global
public class JsonObjectBinder implements TypeBinder<JsonObject> {

    @Override
    public Object bind(String name, Annotation[] annotations, String value, Class actualClass, Type genericType) throws Exception {
        return new JsonParser().parse(value);
    }

}

身体将被Play自动解析。您可以对JsonArray执行同样的操作,以支持您的特定案例

接吻对我来说很有用。因此,我最终传递了一个简单的字符串:filterParams:“milk=chevre&pate=molle”,并在控制器中使用String.split()方法对其进行解析。
public static void handleJsonBody(JsonObject body) {
    ...
}