首先引包:很多包,漏了一个就会导致无法运行的,就是停在那个地方,不进行下去了
struts2-json-plugin-2.1.8.1.jar
commons-beanutils-core-1.8.0-BETA.jar
commons-lang-2.4.jar
ezmorph-1.0.6.jar
ok,包引入之后就进行我们的代码了
首先struts2配置文件中
<!-- Add packages here -->
<package name="ajax" extends="json-default" namespace="/">
<action name="json_*" class="jsonAction" method="{1}">
<!-- 将返回类型设置为json -->
<result type="json" ><param name="root">resultTree</param></result>
</action>
</package>
然后写我们的action
package com.dzy.cms.view.action;
import java.util.List;
import javax.annotation.Resource;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.dzy.cms.domain.Myclass;
import com.dzy.cms.service.MyclassService;
import com.opensymphony.xwork2.ActionSupport;
@Controller
@Scope("prototype")
public class JsonAction extends ActionSupport{
//这个是用来处理json的后台数据的action
//既然我们用来接收学院
@Resource
protected MyclassService myclassService;
private String academyid;
private String resultTree; //返回给json的东西
public String getResultTree() {
return resultTree;
}
public void setResultTree(String resultTree) {
this.resultTree = resultTree;
}
public String getAcademyid() {
return academyid;
}
public void setAcademyid(String academyid) {
this.academyid = academyid;
}
public String ajax()
{
//ok,接收参数
//System.out.println(academyid);
List<Myclass> myclasslist=myclassService.getallclassbyaid(Integer.parseInt(academyid));
try {
//自定义JsonConfig用于过滤Hibernate配置文件所产生的递归数据
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"classcourses","students","academy"}); //只要设置这个数组,指定过滤哪些字段。
//组成JSON数组
JSONArray array=JSONArray.fromObject(myclasslist,config);
this.setResultTree(array.toString());
//System.out.println(array.toString());
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
这里的过滤字段很重要,要不然会死循环什么的报错的