[英]Consuming JSON in play! framework controller
我正在尝试使用我使用 JavaScript 创建的 JSON 数组,但该数组从未绑定在我的 controller
这是我用来调用 controller 操作的 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 is null”(如果我不是的话,我不会扭动这个)
到目前为止,这是非常基本的,我只想将 JS 中生成的数组绑定到我的 JsonArray。 Play.framework 有一个很好的文档,但出于某种原因,关于这个特定主题的内容很少。
如果有人可以对此有所了解,将不胜感激
您只需创建一个 TypeBinder class 即可将 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 会在加载时找到它并将其注册到其他活页夹中:我在我的 controller 中使用它,签名如下:
public static void handleJsonBody(JsonObject body) {
...
}
正文将由 Play 自动解析。 您可以对 JsonArray 执行相同的操作以支持您的特定情况。
您有 2 个选项:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.