将序列化数组传递给 struts2 操作
Passing serialize array to struts2 action
我计划将 post 格式为 JSON 的整个表单数据添加到 Struts2 操作中。下面是我的代码片段。纠正我出错的地方或帮助我,以便我可以正确获取 Action 文件中的所有值。我所有的 SOP in Action 文件都显示为 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","value":"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));
}
});
要获取操作 bean 中的数据,您需要使用 public setter
public void setJsonRequestdata(String data){ this.jsonRequestdata = data; }
要return数据返回success
回调函数使用publicgetter
public String getJsonRequestdata(){ return this.jsonRequestdata; }
到 return JSON 从操作使用结果类型 json
。
<result type="json"><param name="includeProperties">jsonRequestdata</param></result>
请注意,如果您将 json
拦截器添加到操作配置中,您可以在请求中使用 JSON 数据。在请求中使用 Content-Type: "application/json"
将触发 Struts2 解析请求并将其自动反序列化为操作 bean。
由于我使用的是名称,所以我必须使用名称来获取它。下面是工作代码
JSONArray jsonArr = (JSONArray) new JSONParser().parse(jsonRequestdata);
for(int i=0;i<jsonArr.size();i++){
JSONObject json=(JSONObject) jsonArr.get(i);
System.out.println("name=" + json.get("name"));
System.out.println("value=" + json.get("value"));
}
我计划将 post 格式为 JSON 的整个表单数据添加到 Struts2 操作中。下面是我的代码片段。纠正我出错的地方或帮助我,以便我可以正确获取 Action 文件中的所有值。我所有的 SOP in Action 文件都显示为 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","value":"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));
}
});
要获取操作 bean 中的数据,您需要使用 public setter
public void setJsonRequestdata(String data){ this.jsonRequestdata = data; }
要return数据返回success
回调函数使用publicgetter
public String getJsonRequestdata(){ return this.jsonRequestdata; }
到 return JSON 从操作使用结果类型 json
。
<result type="json"><param name="includeProperties">jsonRequestdata</param></result>
请注意,如果您将 json
拦截器添加到操作配置中,您可以在请求中使用 JSON 数据。在请求中使用 Content-Type: "application/json"
将触发 Struts2 解析请求并将其自动反序列化为操作 bean。
由于我使用的是名称,所以我必须使用名称来获取它。下面是工作代码
JSONArray jsonArr = (JSONArray) new JSONParser().parse(jsonRequestdata);
for(int i=0;i<jsonArr.size();i++){
JSONObject json=(JSONObject) jsonArr.get(i);
System.out.println("name=" + json.get("name"));
System.out.println("value=" + json.get("value"));
}