JQuery+JSON+Struts返回一個List到頁面

fmms 12年前發布 | 89K 次閱讀 jQuery JSON Struts2 Web框架

 最近有人問我,怎么用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

<script type="text/javascript" src="<%=basePath%>/js/jquery-1.3.1.js">
   </script>
   <script type="text/javascript">
   function GetTree(num)
   {
       var param={comNum:num};
         $.ajax({                  //采用Ajax方法
         type:"post",        //post方式
         dataType:"json",   //返回數據類型是JSON數據格式
         data:param,            //傳遞給Action的參數是param
         url:"ReturnTree",          //處理的Action名稱
         success:function(data){         //成功的處理函數

           $.each(data,function(commentIndex, comment) {  //遍歷返回數組的每一個實體
           alert(comment.sshortName);                                    //輸出實體的sshortName屬性的值
           })
         },"json");
   }
   </script>
 </head>
 <body>
 <body id="bodyTree">
  <div id="cmsTree">
   <ul id="treemenu3" class="treeview">
    <li>
     <strong>組織架構</strong>
     <a href="javascript:ddtreemenu.flatten('treemenu3', 'expand')"><strong>展開</strong>
     </a>
     <a href="javascript:ddtreemenu.flatten('treemenu3', 'contact')"><strong>收縮</strong>
     </a>
    </li>
    <li>

           //在這里調用JS函數參數是公司的ID
     <i></i><span onclick="GetTree('<%=company.getCompanyNum()%>')"><%=company.getCompanynameC()%></span>
     <ul>
      <li>
       <a href="#">彰化</a>
      </li>

Action的代碼:

public class DLCompanyAction {

private String comNum;//接受頁面傳遞過來的公司ID參數

 public String getComNum() {
  return comNum;
 }
 public void setComNum(String comNum) {
  this.comNum = comNum;
 }

private JSONArray resultTree;//我要返回給頁面的List

 public JSONArray getResultTree() {
  return resultTree;
 }
 public void setResultTree(JSONArray resultTree) {
  this.resultTree = resultTree;
 }
 public String GetDLCTree()
 {
     dlc=new DLcompanyserviceImp();//dlc 是我項目中的一個service實現類,里面有一個方法就是下面的ReturnSubcompanyById,方法是根據給定的公司,返回公司的子公    司   列表
     List<Subcompany> list=dlc.ReturnSbuCommpanyById(comNum);
     JSONArray jsarry=new JSONArray();
     jsarry=JSONArray.fromObject(list);  //或者JSONArray jsarry=JSONArray.fromObject(list)
     resultTree=jsarry;   
    return "success";
 }

}

 

最后是Struts.xml的配置

<package name="TreeDL" extends="json-default">
 <action name="ReturnTree" class="com.wit.action.DLCompanyAction" method="GetDLCTree">
 <result type="json">
  <param name="root">resultTree</param>//resultTree是Action中的返回變量
 </result>
 </action>
 </package>

一切OK,希望對你有幫助哦.
轉自:http://blog.csdn.net/hitxueliang/article/details/6818186

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!