正在使用JSON!框架控制器

| 我正在尝试使用我使用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
这是我在游戏中收到的方式!控制器。我正在使用play 1.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为空”(如果不是这样的话,我就不会打扰) 到目前为止,这是非常基础的,我只想将JS中生成的数组绑定到我的JsonArray。 Play!framework具有出色的文档,但是由于某种原因,关于此特定主题的内容很少。 如果有人可以对此有所了解,将不胜感激     
已邀请:
您只需创建一个TypeBinder类即可将JsonObject绑定功能添加到Play!。实际上,在Play 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);
    }

}
而已!使用@Global批注,Play会在加载时找到它,并将其注册到其他活页夹中。我在控制器中使用以下签名:
public static void handleJsonBody(JsonObject body) {
    ...
}
主体将被Play自动解析。您可以对JsonArray执行相同的操作以支持您的特定情况。     
您有2个选项: 简单的一个:将参数作为字符串传递,然后在控制器中将其解析为Json 复杂的一:使用TypeBinder创建自己的活页夹     

要回复问题请先登录注册