Java 正在使用JSON!框架控制器
我试图使用我使用JavaScript创建的JSON数组,但该数组从未绑定到我的控制器中 下面是我用来调用控制器操作的JavaScript代码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
$.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
- 复杂的一个:使用
@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) {
...
}