Struts 从 2.3.7 升级到 2.3.33 后 JSONWriter.setDateFormatter 的 NoSuchMethodError
NoSuchMethodError for JSONWriter.setDateFormatter after upgrade Struts from 2.3.7 to 2.3.33
我将 Struts 从 2.3.7 升级到 2.3.33(使用 Maven)。虽然使用版本 2.3.7 我的 Web 应用程序运行没有任何问题,但在升级到 2.3.33 后,我在尝试访问包含对服务器的 Ajax 调用的网页时收到以下异常。
java.lang.NoSuchMethodError:
org.apache.struts2.json.JSONWriter.setDateFormatter(Ljava/lang/String;)V
at
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:106)[struts2-json-plugin-2.3.33.jar:]
at
org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:203)[struts2-json-plugin-2.3.33.jar:]
at
org.apache.struts2.json.JSONResult.execute(JSONResult.java:177)[struts2-json-plugin-2.3.33.jar:]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)[xwork-core-2.3.33.jar:2.3.33]
at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)[struts2-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:168)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)[xwork-core-2.3.33.jar:2.3.33]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33]
错误发生在我的 Java 操作将 json 响应发送回客户端时。
下面是我使用的 Ajax 调用:
$.ajax({
url : "list-sample-json",
// data : options.data,
// dataType : "json",
type: "POST",
data: JSON.stringify({ sortParameters : sortParametersList, pageSize:options.data.pageSize, skip:options.data.skip }),
contentType : "application/json; charset=utf-8",
dataType : "json",
success : function (result) {
options.success(result);
},
error : function (response, status, error) {
openErrorDialog(response, status, error);
}
});
访问我的操作没有任何问题 returns SUCCESS
。如上所述,问题似乎发生在 Struts 为客户端生成 JSON 响应时。下面也是我的 Java class,结果类型为 json
。
@Result(name = "success", type = "json", params = { "ignoreHierarchy", "false",
"includeProperties", "textsampleList.*, count" })
@Injectable
public class ListSampleJsonAction {
@Override
public String execute() {
List<SampleDTO> sampleList = new ArrayList<>();
sampleList.add(new SampleDTO("sample")) ;
return SUCCESS;
}
}
我想提一下,在 2.3.16.3 之前,上面的实现一直在工作,我从服务器得到了响应(带有请求的数据)。
我使用 maven 3.0.4 和 Java 1.7_079。谁能指出可能出了什么问题?
我将 Struts 从 2.3.7 升级到 2.3.33(使用 Maven)。虽然使用版本 2.3.7 我的 Web 应用程序运行没有任何问题,但在升级到 2.3.33 后,我在尝试访问包含对服务器的 Ajax 调用的网页时收到以下异常。
java.lang.NoSuchMethodError: org.apache.struts2.json.JSONWriter.setDateFormatter(Ljava/lang/String;)V at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:106)[struts2-json-plugin-2.3.33.jar:] at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:203)[struts2-json-plugin-2.3.33.jar:] at org.apache.struts2.json.JSONResult.execute(JSONResult.java:177)[struts2-json-plugin-2.3.33.jar:] at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)[xwork-core-2.3.33.jar:2.3.33] at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)[struts2-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:168)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)[xwork-core-2.3.33.jar:2.3.33] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33]
错误发生在我的 Java 操作将 json 响应发送回客户端时。
下面是我使用的 Ajax 调用:
$.ajax({
url : "list-sample-json",
// data : options.data,
// dataType : "json",
type: "POST",
data: JSON.stringify({ sortParameters : sortParametersList, pageSize:options.data.pageSize, skip:options.data.skip }),
contentType : "application/json; charset=utf-8",
dataType : "json",
success : function (result) {
options.success(result);
},
error : function (response, status, error) {
openErrorDialog(response, status, error);
}
});
访问我的操作没有任何问题 returns SUCCESS
。如上所述,问题似乎发生在 Struts 为客户端生成 JSON 响应时。下面也是我的 Java class,结果类型为 json
。
@Result(name = "success", type = "json", params = { "ignoreHierarchy", "false",
"includeProperties", "textsampleList.*, count" })
@Injectable
public class ListSampleJsonAction {
@Override
public String execute() {
List<SampleDTO> sampleList = new ArrayList<>();
sampleList.add(new SampleDTO("sample")) ;
return SUCCESS;
}
}
我想提一下,在 2.3.16.3 之前,上面的实现一直在工作,我从服务器得到了响应(带有请求的数据)。
我使用 maven 3.0.4 和 Java 1.7_079。谁能指出可能出了什么问题?