**
更新代码
**
我的Javascript / Ajax代码:
$(function() {
$("#create_obd").bind("click", function(event) {
var soNumber = [];
$('#sales_order_lineItems input[type=checkbox]:checked').each(function(index) {
var row = $(this).parent().parent();
var rowcells = row.find('td');
var soRowData = {
so_number:rowcells[1].innerText
};
soNumber.push(soRowData);
}); //loop ends
var soNumbers = JSON.stringify(soNumber);
alert(soNumbers);
$.ajax({
type: "POST",
url: server_ip_address + "/createobdaction",
data: soNumbers,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
});
});
我的Java代码:
package com.app.action;
import java.util.List;
import com.app.bean.SONumber;
public class CreateOBDAction {
private List<SONumber> soNumbers;
public String createOBD() {
System.out.println(soNumbers.size());
return "jsonCreateOBDSuccess";
}
public List<SONumber> getSoNumbers() {
System.out.println("Getter................");
return soNumbers;
}
public void setSoNumbers(List<SONumber> soNumbers) {
System.out.println("Setter............");
this.soNumbers = soNumbers;
}
}
Bean类
package com.app.bean;
public class SONumber {
String soNumber;
public String getSoNumber() {
return soNumber;
}
public void setSoNumber(String soNumber) {
this.soNumber = soNumber;
}
}
struts.xml中
<action name="createobdaction" class="com.app.action.CreateOBDAction"
method="createOBD">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result name="jsonCreateOBDSuccess" type="json" />
</action>
异常
15:32:00,092 ERROR JSONInterceptor:34 - 无法反序列化JSON 请求对象15:32:00,093 DEBUG Dispatcher:80 - 例外 处理请求期间发生:无法反序列化JSON对象 来自请求org.apache.struts2.json.JSONException:无法 从请求中反序列化JSON对象 org.apache.struts2.json.JSONInterceptor.intercept(JSONInterceptor.java:117)
答案 0 :(得分:0)
Struts2-JSON-plugin
; 来自文档:
如果使用拦截器,将从请求中的JSON内容填充操作,这些是拦截器的规则:
- &#34;内容类型&#34;必须是&#34; application / json&#34;
- JSON内容必须是 格式良好,请参阅json.org的语法。
- 行动必须公开 &#34;设定器&#34;必须填充的字段的方法。
- 支持的类型 人口是:Primitives(int,long ... String),Date,List,Map, 原始数组,其他类(稍后详细介绍)和其他数组 类。
- JSON中的任何对象,即要在列表中填充,或者是 map,将是Map类型(从属性映射到值),any 整数将是Long类型,任何十进制数都是类型 Double,以及List类型的任何数组。
醇>