我在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;
    }
    });
     });
   });