最近有人问我,怎么用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 | <scripttype="text/javascript"src="<%=basePath%>/js/jquery-1.3.1.js"> |
03 | <scripttype="text/javascript"> |
06 | var param={comNum:num}; |
09 | dataType:"json", //返回数据类型是JSON数据格式 |
10 | data:param, //传递给Action的参数是param |
11 | url:"ReturnTree", //处理的Action名称 |
12 | success:function(data){ //成功的处理函数 |
14 | $.each(data,function(commentIndex, comment) { //遍历返回数组的每一个实体 |
15 | alert(comment.sshortName); //输出实体的sshortName属性的值 |
24 | <ulid="treemenu3"class="treeview"> |
27 | <ahref="javascript:ddtreemenu.flatten('treemenu3', 'expand')"><strong>展开</strong> |
29 | <ahref="javascript:ddtreemenu.flatten('treemenu3', 'contact')"><strong>收缩</strong> |
35 | <i></i><spanonclick="GetTree('<%=company.getCompanyNum()%>')"><%=company.getCompanynameC()%></span> |
Action的代码:
01 | publicclassDLCompanyAction { |
05 | publicString getComNum() { |
08 | publicvoidsetComNum(String comNum) { |
12 | privateJSONArray resultTree; |
14 | publicJSONArray getResultTree() { |
17 | publicvoidsetResultTree(JSONArray resultTree) { |
18 | this.resultTree = resultTree; |
20 | publicString GetDLCTree() |
22 | dlc=newDLcompanyserviceImp(); |
23 | List<Subcompany> list=dlc.ReturnSbuCommpanyById(comNum); |
24 | JSONArray jsarry=newJSONArray(); |
25 | jsarry=JSONArray.fromObject(list); |
最后是Struts.xml的配置
1 | <packagename="TreeDL"extends="json-default"> |
2 | <actionname="ReturnTree"class="com.wit.action.DLCompanyAction"method="GetDLCTree"> |
4 | <paramname="root">resultTree</param>//resultTree是Action中的返回变量 |
一切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 | <scripttype="text/javascript"src="<%=basePath%>/js/jquery-1.3.1.js"> |
03 | <scripttype="text/javascript"> |
06 | var param={comNum:num}; |
09 | dataType:"json", //返回数据类型是JSON数据格式 |
10 | data:param, //传递给Action的参数是param |
11 | url:"ReturnTree", //处理的Action名称 |
12 | success:function(data){ //成功的处理函数 |
14 | $.each(data,function(commentIndex, comment) { //遍历返回数组的每一个实体 |
15 | alert(comment.sshortName); //输出实体的sshortName属性的值 |
24 | <ulid="treemenu3"class="treeview"> |
27 | <ahref="javascript:ddtreemenu.flatten('treemenu3', 'expand')"><strong>展开</strong> |
29 | <ahref="javascript:ddtreemenu.flatten('treemenu3', 'contact')"><strong>收缩</strong> |
35 | <i></i><spanonclick="GetTree('<%=company.getCompanyNum()%>')"><%=company.getCompanynameC()%></span> |
Action的代码:
01 | publicclassDLCompanyAction { |
05 | publicString getComNum() { |
08 | publicvoidsetComNum(String comNum) { |
12 | privateJSONArray resultTree; |
14 | publicJSONArray getResultTree() { |
17 | publicvoidsetResultTree(JSONArray resultTree) { |
18 | this.resultTree = resultTree; |
20 | publicString GetDLCTree() |
22 | dlc=newDLcompanyserviceImp(); |
23 | List<Subcompany> list=dlc.ReturnSbuCommpanyById(comNum); |
24 | JSONArray jsarry=newJSONArray(); |
25 | jsarry=JSONArray.fromObject(list); |
最后是Struts.xml的配置
1 | <packagename="TreeDL"extends="json-default"> |
2 | <actionname="ReturnTree"class="com.wit.action.DLCompanyAction"method="GetDLCTree"> |
4 | <paramname="root">resultTree</param>//resultTree是Action中的返回变量 |
一切OK,希望对你有帮助哦.