我在action里查数据库后得到list,把list赋给成员变量,然后再jsp页面用jquery解析json取list。现在发现,list里如果是数据库查出来的对象,就报错,如果是手动new出来的对象,放到list里,就好使,怎么回事啊。
错误:如下HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
。省略了我的action类:package com.caidongyu.homework.action;
import java.util.ArrayList;
import java.util.List;import org.apache.struts2.json.annotations.JSON;import com.caidongyu.hibernate.dao.factory.DaoFactory;
import com.caidongyu.homework.model.AreaDict;
import com.opensymphony.xwork2.ActionSupport;public class JsonAction extends ActionSupport {
private static final long serialVersionUID = 7443363719737618408L;
private List<AreaDict> list;//测试我的list能不能在jsp页面用ajax接收
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
String dictCode = "13000";
list = new ArrayList<AreaDict>();
List<AreaDict> l = (List<AreaDict>)DaoFactory.createDao().query("from AreaDict where dictcode like '"+dictCode.substring(0,2)+"__00' and dictcode <> '"+dictCode+"'");
for(AreaDict obj:l){
AreaDict a = obj;
System.out.println(a.getDictValue());
list.add(a);
}
return SUCCESS;
}
@JSON(serialize=false)
public List<AreaDict> getList() {
return list;
}public void setList(List<AreaDict> list) {
this.list = list;
}
}我的jsp页面的js:
<script type="text/javascript">
$(function() {
$("#tj").change(function() {
//提交的参数,name和inch是和struts action中对应的接收变量
var params = {
name : $("#xm").val(),
inch : $("#sg").val()
};
$.ajax({
type: "POST",
url: "jsonAjax.action",
data: params,
dataType:"json", //ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
success: function(json){
// var obj = $.parseJSON(json); //如果dataTyoe:"text" 需要使用这个方法解析json
// var state_value = json.result; //result是和action中定义的result变量的get方法对应的
// alert(state_value);
alert("ok");
},
error: function(json){
alert("json=" + json);
return false;
}
});
});
});
错误:如下HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
。省略了我的action类:package com.caidongyu.homework.action;
import java.util.ArrayList;
import java.util.List;import org.apache.struts2.json.annotations.JSON;import com.caidongyu.hibernate.dao.factory.DaoFactory;
import com.caidongyu.homework.model.AreaDict;
import com.opensymphony.xwork2.ActionSupport;public class JsonAction extends ActionSupport {
private static final long serialVersionUID = 7443363719737618408L;
private List<AreaDict> list;//测试我的list能不能在jsp页面用ajax接收
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
String dictCode = "13000";
list = new ArrayList<AreaDict>();
List<AreaDict> l = (List<AreaDict>)DaoFactory.createDao().query("from AreaDict where dictcode like '"+dictCode.substring(0,2)+"__00' and dictcode <> '"+dictCode+"'");
for(AreaDict obj:l){
AreaDict a = obj;
System.out.println(a.getDictValue());
list.add(a);
}
return SUCCESS;
}
@JSON(serialize=false)
public List<AreaDict> getList() {
return list;
}public void setList(List<AreaDict> list) {
this.list = list;
}
}我的jsp页面的js:
<script type="text/javascript">
$(function() {
$("#tj").change(function() {
//提交的参数,name和inch是和struts action中对应的接收变量
var params = {
name : $("#xm").val(),
inch : $("#sg").val()
};
$.ajax({
type: "POST",
url: "jsonAjax.action",
data: params,
dataType:"json", //ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
success: function(json){
// var obj = $.parseJSON(json); //如果dataTyoe:"text" 需要使用这个方法解析json
// var state_value = json.result; //result是和action中定义的result变量的get方法对应的
// alert(state_value);
alert("ok");
},
error: function(json){
alert("json=" + json);
return false;
}
});
});
});
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货