我打算将JSON格式的整个表单数据发布到Struts2 Action.以下是我的代码段.纠正我要去哪里的错误或帮助我,以便我可以正确获取Action文件中的所有值.我在操作文件中的所有SOP都显示为null
var MyForm = $("#companyform").serializeArray();
var data = JSON.stringify(MyForm);
$.ajax({
type: 'POST',
url:'createcompany.action?jsonRequestdata='+data,
dataType: 'json',
success: function(data){
console.log(stringify(data));
}});
我的表单数据被转换为[{“ name”:“ tan”,“ value”:“ rrr”},{“ name”:“ pan”,“ value”:“ adf”},{“ name”:“ tod ”, “值”: “1”}]
Struts2操作文件:
String jsonRequestdata;
public String execute() throws Exception {
JSONArray jsonArr = (JSONArray) new JSONParser().parse(jsonRequestdata);
JSONObject json = (JSONObject) jsonArr.get(0);
System.out.println("TAN=" + json.get("tan"));
System.out.println("PAN=" + json.get("pan"));
System.out.println("TOD=" + json.get("tod"));
return "success";
}
现在的输出
TAN=null
PAN=null
TOD=null
解决方法:
要使用POST请求发送数据,您应该使用data属性,例如:
$.ajax({
type: 'POST',
url:'createcompany.action'
data: 'jsonRequestdata='+data
dataType: 'json',
success: function(data){
console.log(JSON.stringify(data.jsonRequestdata));
}
});
要在action bean中获取数据,您需要使用public setter
public void setJsonRequestdata(String data){ this.jsonRequestdata = data; }
要将数据返回到成功回调函数,请使用public getter
public String getJsonRequestdata(){ return this.jsonRequestdata; }
要从操作返回JSON,请使用结果类型json.
<result type="json"><param name="includeProperties">jsonRequestdata</param></result>
注意,如果将json拦截器添加到操作配置中,则可以在请求中使用JSON数据.在请求中使用Content-Type:“ application / json”将触发Struts2解析请求并将其自动反序列化到操作bean.