Ala*_*ain 6 javascript java json playframework
我正在尝试使用我使用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();
});
Run Code Online (Sandbox Code Playgroud)
我的路线文件输入
POST /produits_ajax Application.produitsAjax
Run Code Online (Sandbox Code Playgroud)
以下是我在剧中收到它的方式!控制器.我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
你可以想象我总是在我的控制台中得到"filterParams is null"(如果我没有,我不会扭动这个)
到目前为止,我只是想将JS中生成的数组绑定到我的JsonArray.Play!framework有很好的文档,但由于某些原因,这个特定的主题很少.
如果有人能对此有所了解,我将不胜感激
Joe*_*non 17
您只需创建一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
而已!使用@Global注释,Play将在加载时找到它并将其注册到其他绑定器.我在我的控制器中使用以下签名:
public static void handleJsonBody(JsonObject body) {
...
}
Run Code Online (Sandbox Code Playgroud)
Play将自动解析正文.您可以为JsonArray执行相同操作以支持您的特定情况.
| 归档时间: |
|
| 查看次数: |
8597 次 |
| 最近记录: |