1. 程式人生 > >JQueryPagination分頁插件,ajax從struts請求數據

JQueryPagination分頁插件,ajax從struts請求數據

參數 ret closed struts2 全局 lib assembly tlist com

2017-07-16

學完了struts,做了個關於分頁的小例子,用到了JQuery分頁插件Pagination,先貼下插件下載地址

http://www.jq22.com/jquery-info13734

技術分享

插件作者對於參數講解的不夠詳細,琢磨了半天才明白怎麽用,不多說,直接代碼

1.客戶端(jsp頁面)

技術分享
 1 /*這些css為了控制生成的數據和分頁的li標簽的位置*/
 2     a {
 3         text-decoration:none;
 4         color:black;
 5         font-weight: bold;
 6         text-align
:center; 7 } 8 table { 9 width:500px; 10 height:300px; 11 text-align: center; 12 } 13 #table { 14 position:relative; 15 top:100px; 16 } 17 #page { 18 height:50px; 19 text-align:center; 20 position:relative; 21 top
:100px; 22 } 23 #page li { 24 position:relative; 25 left:450px; 26 } 27 28 </style>
css部分
        
    <!--一定要引入樣式表和js文件-->
    <link rel="stylesheet" type="text/css" href="pagination/page.css">
    <script type="text/javascript" src="pagination/jquery.min.js"
></script> <script type="text/javascript" src="pagination/page.js"></script>
 1    <div id="table"  align="center"></div>  <!--用於顯示數據的div-->
 2   <div id="page" class="page"></div>  <!--div的class要設置成引入的css文件中的.page-->
 3   
 4    <script type="text/javascript">
 5                 var url ="${pageContext.request.contextPath}/show_list";
 6                 var $table = $("<table border=‘2px‘ id=‘a‘ width=‘300px‘ height=‘200px‘></table>");
 7                 var $tr = $("<tr display=‘none‘></tr>");
 8                 var $td = $("<td>編號</td><td>姓名</td><td>薪水</td><td>部門</td><td>操作</td>");
 9                 $tr.append($td);
10                 $table.append($tr);
11                 var datas = null;      //datas,options一定要設置為全局變量,發現不設置成全局,沒法使用插件
12                 var options = null; 
13                 var pagelistcount = 6; //每頁顯示數據個數
14             //    var maxentries = 50;   //要顯示的數據總量,未進行傳遞
15                 $.ajax({
16                     url:url,
17                     type:"GET",
18                     data:null,
19                     dataType:"json",
20                     success:function(backdata) {
21                         datas = backdata;
22                         var a =eval(backdata);
23                         options={ 
24                                 "id":"page",     //----顯示頁碼的元素(數據放在哪裏)---->上面的div標簽
25                                 "data":datas,   //-----返回的數據---->json形式
26                                 "maxshowpageitem":10,//-----最多顯示的頁碼個數
27                                 "pagelistcount":pagelistcount,//-----每頁顯示數據個數,下面的callback是每個分頁插件都有的回調函數
28                                 "callBack":function(result){  //----result表示處理好的數據集,比如你設置了pagelistcount為6,那麽result就有6條數據
29                                  $("#table").append($table);    
30                                 //遍歷生成表格並插入數據    
31                                 $.each(result,function(index,emp) {
32                                         $tr = $("<tr></tr>");
33                                         $table.append($tr);
34                                         for(var i=0; i<=4; i++) {
35                                             $td = $("<td></td>");
36                                             $tr.append($td);
37                                         }
38                                         var $tr = $("table tr");
39                                         //解決多生成表格的問題--->總數50,每頁6條,最後一頁不足6條,這樣解決多生成表格的問題
40                                         if($tr.size() > result.length) {
41                                             $("table tr:gt("+ result.length + ")").remove();
42                                         }
44                                         var $td = $tr.eq(index+1).find("td");
45                                         var info = $(result).get(index);
46                                         var $empId = $td.eq(0).text(info.empId);
47                                         var $empName = $td.eq(1).text(info.empName)
48                                         var $salary = $td.eq(2).text(info.salary);
49                                         var $dept = $td.eq(3).text(info.dept.deptName);
50                                         var $action = $td.eq(4).html("<a href=${update}?empId=" + info.empId+">修改</a>&nbsp;&nbsp;<a id =‘del" + info.empId + "‘ href=‘#‘>刪除</a>");
51                                         $("#del" + info.empId).click(function () {
52                                             if(window.confirm("確定要刪除嗎?刪除之後無法恢復!!!")) {
53                                                 $(this).attr("href","${delete}?empId=" + info.empId);
54                                             }
55                                         })
56                                     }); 
57                                 }
58                             };
59                          page.init(datas.length,1,options); //執行分頁,1表示加載完成後顯示為第一頁
60                     }
61                  });  
62       </script>
63 
64   </body>
65   
66   

2.服務器

使用了struts並且返回的數據是json格式所以要引入以下jar文件

技術分享
struts部分
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar
json部分
struts2-json-plugin-2.3.4.1.jar
json-lib-2.3-jdk15.jar
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
ezmorph-1.0.3.jar
commons-logging-1.1.1.jar
View Code

如果采用用戶庫的方式添加的話要註意把jar包部署到tomcat中

項目(右擊)--->buildPath--->configure build path---->搜索deployment Assembly--->add--->java build path entries

或者直接在webRoot下的lib放jar包然後添加到項目中即可(變成奶瓶!!才可以)

如何讓struts返回json文本?

1.包繼承 json-default,

2.result中 type="json",params中寫好要轉換的對象

3.action中一定要為要轉換的對象設置get方法,並且要轉換的對象不能為null!!

配置文件

  <package name="xxxx" extends="json-default">
    <action name="show_*" class="employeeAction" method="{1}">
           <result name="list" type="json">
                <param name="root">listEmployees</param>  <!--name="root"獲得根級對象,具體自行百度-->
           </result>
    </action>
            

action

  private List<Employee> listEmployees;
    //使用json時只需設置get方法
    public List<Employee> getListEmployees() {
        return listEmployees;
    }
    /**
     * 員工列表展示
     * @return
     */
    public String list() {
        listEmployees = employeeService.getAll();//註意賦值
        return "list";
    }
    


當然除了利用struts返回json也可以直接寫個servlet返回數據,具體不再贅述

本人新手一枚,多有不足還望海涵,批評指正!!!

JQueryPagination分頁插件,ajax從struts請求數據