JQuery+JSON+Struts返回一个List到页面

来源:互联网 发布:java发送qq消息接口 编辑:程序博客网 时间:2024/06/06 05:25

 最近有人问我,怎么用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的代码:

01public class DLCompanyAction {
02 
03private String comNum;//接受页面传递过来的公司ID参数
04  
05 public String getComNum() {
06  return comNum;
07 }
08 public void setComNum(String comNum) {
09  this.comNum = comNum;
10 }
11 
12private 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 <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的代码:

01public class DLCompanyAction {
02 
03private String comNum;//接受页面传递过来的公司ID参数
04  
05 public String getComNum() {
06  return comNum;
07 }
08 public void setComNum(String comNum) {
09  this.comNum = comNum;
10 }
11 
12private 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,希望对你有帮助哦.

原创粉丝点击