使用Struts2。
在我的行动中,我有一个List<Person> persons;
在javascript中,我有这个功能:
function mytestfunction() {
var url = "MyAction_mytestfunction.action";
var params = {};
var arr = [];
var p1 = { "firstname" : "John", "lastname" : "Doe"};
var p2 = { "firstname" : "Rob", "lastname" : "Smith"};
arr.push(p1); arr.push(p2);
params["persons"] = arr;
$.post(url, params, function(data) {
console.log("done");
});
}
问题是,post()永远不会到达动作。日志中没有错误,没有。
如果不是发布对象而是发布原语,这一切都会改变。因此,如果我在操作中有List<Integer> nums
,在javascript中有params["nums"] = [1,2,3];
,那么一切都会正常发布。
那么,有没有办法通过javascript / jquery将JSON对象发布到Struts2动作?
我应该提一下,我使用的是struts-jquery插件,而不是dojo。
答案 0 :(得分:1)
我对struts一无所知,但这就是我用json POST对象的方式:
$.ajax({
type: "POST",
data: JSON.stringify(SOME_JAVASCRIPT_OBJECT),
contentType: "application/json; charset=utf-8"
// etc: etc
});
答案 1 :(得分:0)
您可以尝试以下示例:
$.ajax({
type: "Post",
url: "action_name", //you can pass through querystring like actionname?paramname=value
data : {
//here comes your param or array
},
dataType:"json",
contentType: "application/json; charset=utf-8",
});
如果要通过查询字符串类型必须是GET