• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

正在使用JSON!框架 Controller

java 5次浏览

我正在尝试使用我使用JavaScript创建的JSON数组,但是该数组从未绑定(bind)到我的 Controller 中

这是我用来调用 Controller Action 的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

这是我在游戏中收到的方式! Controller 。我正在使用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中生成的数组绑定(bind)到我的JsonArray。 Play!framework具有出色的文档,但是由于某种原因,关于这个特定主题的内容很少。

如果有人可以对此有所了解,将不胜感激

解决方案如下:

您只需要创建一个TypeBinder类即可将JsonObject绑定(bind)功能添加到Play!。实际上,在Play 1.2中很容易实现。这是完整的类(class):

@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会在加载时找到它,并将其注册到其他活页夹中。我在 Controller 中使用以下签名:

public static void handleJsonBody(JsonObject body) {
    ...
}

主体将被Play自动解析。您可以对JsonArray执行相同的操作以支持您的特定情况。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)