最近有人问我,怎么用JQuery+JSON+Struts实现,返回一个List到页面,前面我已经讲过了 一个简单的登陆的例子,那是返回一个字符串,
这个例子有些不同,因为你要返回的是一个列表,而列表中都是实体:在这个实例中点击公司名称,返回子公司列表,从Action中返回List
这就需要用到JSONArray 把原来的List 转化为JSONArray格式,我看到网上有相应的文章,但是相对麻烦,还有很多人自己写代码,实现普通的实体转化为JSon对象,
这样的人很厉害,但是有现成的为什么还自己动手呢,直接用JSON包中的不就行了嘛
准备:在你为整个项目添加了Struts之后(例子中是Struts2.1)
还要下载一个json-lib-2.4-jdk15.jar(我下载的是这个版本),添加到项目中
同时还要下载一个ezmorth-1.0.1.jar(我用的这个版本比较低,可以下载新的),否则就会出现 class net.sf.json.XXXX can't fount这样的错误,就是一个类找不到,把
这个包加入就没有问题了。
准备结束了,直接看代码就行了:
首先看show.jsp
01 |
< script type = "text/javascript" src="<%=basePath%>/js/jquery-1.3.1.js"> |
02 |
</ script > |
03 |
< script type = "text/javascript" > |
04 |
function GetTree(num) |
05 |
{ |
06 |
var param={comNum:num}; |
07 |
$.ajax({ //采用Ajax方法 |
08 |
type:"post", //post方式 |
09 |
dataType:"json", //返回数据类型是JSON数据格式 |
10 |
data:param, //传递给Action的参数是param |
11 |
url:"ReturnTree", //处理的Action名称 |
12 |
success:function(data){ //成功的处理函数 |
13 |
14 |
$.each(data,function(commentIndex, comment) { //遍历返回数组的每一个实体 |
15 |
alert(comment.sshortName); //输出实体的sshortName属性的值 |
16 |
}) |
17 |
},"json"); |
18 |
} |
19 |
</ script > |
20 |
</ head > |
21 |
< body > |
22 |
< body id = "bodyTree" > |
23 |
< div id = "cmsTree" > |
24 |
< ul id = "treemenu3" class = "treeview" > |
25 |
< li > |
26 |
< strong >组织架构</ strong > |
27 |
< a href = "javascript:ddtreemenu.flatten('treemenu3', 'expand')" >< strong >展开</ strong > |
28 |
</ a > |
29 |
< a href = "javascript:ddtreemenu.flatten('treemenu3', 'contact')" >< strong >收缩</ strong > |
30 |
</ a > |
31 |
</ li > |
32 |
< li > |
33 |
34 |
//在这里调用JS函数参数是公司的ID |
35 |
< i ></ i >< span onclick="GetTree('<%=company.getCompanyNum()%>')"><%=company.getCompanynameC()%></ span > |
36 |
< ul > |
37 |
< li > |
38 |
< a href = "#" >彰化</ a > |
39 |
</ li > |
Action的代码:
01 |
public class DLCompanyAction { |
02 |
03 |
private String comNum; //接受页面传递过来的公司ID参数 |
04 |
|
05 |
public String getComNum() { |
06 |
return comNum; |
07 |
} |
08 |
public void setComNum(String comNum) { |
09 |
this .comNum = comNum; |
10 |
} |
11 |
12 |
private JSONArray resultTree; //我要返回给页面的List |
13 |
|
14 |
public JSONArray getResultTree() { |
15 |
return resultTree; |
16 |
} |
17 |
public void setResultTree(JSONArray resultTree) { |
18 |
this .resultTree = resultTree; |
19 |
} |
20 |
public String GetDLCTree() |
21 |
{ |
22 |
dlc= new DLcompanyserviceImp(); //dlc 是我项目中的一个service实现类,里面有一个方法就是下面的ReturnSubcompanyById,方法是根据给定的公司,返回公司的子公 司 列表 |
23 |
List<Subcompany> list=dlc.ReturnSbuCommpanyById(comNum); |
24 |
JSONArray jsarry= new JSONArray(); |
25 |
jsarry=JSONArray.fromObject(list); //或者JSONArray jsarry=JSONArray.fromObject(list) |
26 |
resultTree=jsarry; |
27 |
return "success" ; |
28 |
} |
29 |
30 |
} |
最后是Struts.xml的配置
1 |
< package name = "TreeDL" extends = "json-default" > |
2 |
< action name = "ReturnTree" class = "com.wit.action.DLCompanyAction" method = "GetDLCTree" > |
3 |
< result type = "json" > |
4 |
< param name = "root" >resultTree</ param >//resultTree是Action中的返回变量 |
5 |
</ result > |
6 |
</ action > |
7 |
</ package > |
一切OK,希望对你有帮助哦.
最近有人问我,怎么用JQuery+JSON+Struts实现,返回一个List到页面,前面我已经讲过了 一个简单的登陆的例子,那是返回一个字符串,
这个例子有些不同,因为你要返回的是一个列表,而列表中都是实体:在这个实例中点击公司名称,返回子公司列表,从Action中返回List
这就需要用到JSONArray 把原来的List 转化为JSONArray格式,我看到网上有相应的文章,但是相对麻烦,还有很多人自己写代码,实现普通的实体转化为JSon对象,
这样的人很厉害,但是有现成的为什么还自己动手呢,直接用JSON包中的不就行了嘛
准备:在你为整个项目添加了Struts之后(例子中是Struts2.1)
还要下载一个json-lib-2.4-jdk15.jar(我下载的是这个版本),添加到项目中
同时还要下载一个ezmorth-1.0.1.jar(我用的这个版本比较低,可以下载新的),否则就会出现 class net.sf.json.XXXX can't fount这样的错误,就是一个类找不到,把
这个包加入就没有问题了。
准备结束了,直接看代码就行了:
首先看show.jsp
01 |
< script type = "text/javascript" src="<%=basePath%>/js/jquery-1.3.1.js"> |
02 |
</ script > |
03 |
< script type = "text/javascript" > |
04 |
function GetTree(num) |
05 |
{ |
06 |
var param={comNum:num}; |
07 |
$.ajax({ //采用Ajax方法 |
08 |
type:"post", //post方式 |
09 |
dataType:"json", //返回数据类型是JSON数据格式 |
10 |
data:param, //传递给Action的参数是param |
11 |
url:"ReturnTree", //处理的Action名称 |
12 |
success:function(data){ //成功的处理函数 |
13 |
14 |
$.each(data,function(commentIndex, comment) { //遍历返回数组的每一个实体 |
15 |
alert(comment.sshortName); //输出实体的sshortName属性的值 |
16 |
}) |
17 |
},"json"); |
18 |
} |
19 |
</ script > |
20 |
</ head > |
21 |