分頁代碼及用法

一,首先複製三個類

類一PageContextTag

package log.tags;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

public class PageContextTag extends TagSupport{
 private static final long serialVersionUID = 1L;
 private String href;

 public String getHref() {
  return href;
 }

 public void setHref(String href) {
  this.href = href;
 }
 
 public int doEndTag() throws JspTagException {
  try {
   HttpServletRequest re = (HttpServletRequest)pageContext.getRequest();
   String out = re.getRequestURL().toString();
   int index = out.indexOf("/", out.indexOf("/", 7)+1);
   out = "<base href=\""+out.substring(0,index)+"/\">";
   pageContext.getOut().write(out); 
  }catch(Exception e){
   e.printStackTrace();
  }
  return EVAL_PAGE;
 }
}

 

類二PageTag

package log.tags;

import java.io.IOException;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * describe: 翻頁標籤
 * @author zhangming
 * @date 2010-3-18
 */
public class PageTag extends TagSupport{
 private String method;     //action對應查詢方法
 private String tarAction;  //action
 private String tarFrame;   //對應frame
 
 public int doStartTag() throws JspTagException {
  return SKIP_BODY;
 }

 public int doEndTag() throws JspTagException {
  try {
   StringBuffer out = new StringBuffer();
   out.append("<!------------------------------ start pageTag ------------------------------>\r\n");
   out.append("<script type=\"text/javascript\" language=\"javaScript\">\r\n");
   out.append(" function turn(control,aa){\r\n");
   out.append("  var indexint=parseInt(document.getElementById(\"currp\").innerHTML);\r\n");
   out.append("  var countpage=parseInt(document.getElementById(\"countpage\").innerHTML);\r\n");
   out.append("  if(control==\"first\"){\r\n");
   out.append("      if(indexint==1||indexint==0) {\r\n");
   //out.append("       alert(\"這是首頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");
   out.append("   indexint = 1;\r\n");
   out.append("  }if(control==\"previous\"){\r\n");
   out.append("      if(indexint==1||indexint==0) {\r\n");
   //out.append("       alert(\"這是首頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");   
   out.append("   indexint = indexint-1;\r\n");
   out.append("  }if(control==\"next\"){\r\n");
   out.append("      if(indexint==countpage) {\r\n");
   //out.append("       alert(\"這是尾頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");   
   out.append("   indexint = indexint+1;\r\n");
   out.append("  }if(control==\"last\"){\r\n");
   out.append("      if(indexint==countpage) {\r\n");
   //out.append("       alert(\"這是尾頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");    
   out.append("   indexint = parseInt(document.getElementById(\"countpage\").innerHTML);\r\n");
   out.append("  }document.forms[0].currPage.value=indexint; \r\n");
   out.append("  document.forms[0].action=\""+tarAction+"\";\r\n");
   out.append("  document.forms[0].target=\""+tarFrame+"\";\r\n");
   out.append("  document.forms[0].submit();\r\n");
   out.append(" }\r\n");
   out.append("    function goTo(){\r\n");
   out.append("      var re =   /^\\+?[1-9][0-9]*$/;\r\n");
   out.append("      var obj=  document.getElementById(\"currPage\");\r\n");
   out.append("      var countPage= document.getElementById(\"countpage\").innerHTML;\r\n");
   out.append("      if (!re.test(obj.value))\r\n");
   out.append("        {\r\n");
   out.append("          alert(\"請輸入正確的頁數\");\r\n");
   out.append("          obj.focus();\r\n");
   out.append("        }else{\r\n");
   out.append("          if(countPage<obj.value) obj.value=countPage;\r\n");
   out.append("          document.forms[0].action=\""+tarAction+"\";\r\n");
   out.append("    document.forms[0].target=\""+tarFrame+"\";\r\n");
   out.append("    document.forms[0].submit();\r\n");
   out.append("        }\r\n");
   out.append("    }\r\n");
   
   out.append("</script>\r\n");
   
   out.append("      <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:0px\">\r\n");
   out.append("        <tr> \r\n");
   out.append("          <td width=\"20\" height=\"25\" align=\"right\"><img src=\"/jjxf_MP/image/page/pic02.gif\" width=\"20\" height=\"11\"></td>\r\n");
   out.append("          <td align=\"left\">查詢結果 共<span class=\"text\"> <span class=\"text\"><label id=\"icount\">0</label></span> \r\n");
   out.append("            </span>條記錄,第<span class=\"text\"><label id=\"currp\">0</label>/<label id=\"countpage\">0</label></span> 頁</td>\r\n");
   out.append("          <td align=\"right\"> <table  align=\"right\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:0px\">\r\n");
   out.append("              <tr> \r\n");
   out.append("                <td width=\"18\"><a href=\"javascript:void(0)\"  οnclick=\"turn('first',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/sy1.gif\" alt=\"首頁\" name=\"firstpage\" id=\"firstpage\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"48\"><a href=\"javascript:void(0)\"  οnclick=\"turn('previous',document.forms[0])\" ><img src=\"/jjxf_MP/image/page//syy1.gif\" alt=\"上一頁\" name=\"previouspage\" id=\"previouspage\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"48\"><a href=\"javascript:void(0)\"  οnclick=\"turn('next',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/xyy1.gif\" alt=\"下一頁\" name=\"nextpage\" id=\"nextpage\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"18\"><a href=\"javascript:void(0)\"  οnclick=\"turn('last',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/wy1.gif\" alt=\"尾頁\" name=\"lastpage\" id=\"lastpage\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("          <td align=\"left\" class=\"STYLE2\">&nbsp;轉到第 <input type=\"text\" name=\"currPage\" id=\"currPage\" value=\"1\" style=\"width:30px\">頁&nbsp;<input type=\"button\" name=\"go\" value=\"GO\" onClick=\"goTo();\"></td>\r\n");
   out.append("              </tr>\r\n");
   out.append("            </table></td>\r\n");
   out.append("        </tr>\r\n");
   out.append("      </table>\r\n");
   out.append("<!------------------------------ end pageTag ------------------------------>\r\n");
   pageContext.getOut().write(out.toString());  
  } catch (IOException e) {
   e.printStackTrace();
  }
  return EVAL_PAGE;
 }

 public void doInitBody() throws JspTagException {
 }

 public void setBodyContent(BodyContent bodyContent) {
 }

 public String getMethod() {
  return method;
 }

 public void setMethod(String method) {
  this.method = method;
 }

 public String getTarAction() {
  return tarAction;
 }

 public void setTarAction(String tarAction) {
  this.tarAction = tarAction;
 }

 public String getTarFrame() {
  return tarFrame;
 }

 public void setTarFrame(String tarFrame) {
  this.tarFrame = tarFrame;
 }

 
 
}

類三PageTagForMoreForm

package log.tags;

import java.io.IOException;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * describe: 翻頁標籤
 * @author zhangming
 * @date 2010-3-18
 */
public class PageTagForMoreForm extends TagSupport{
 private String method;     //action對應查詢方法
 private String tarAction;  //action
 private String tarFrame;   //對應frame
 private String tarForm;//對應的form
 private String count;//對應的元素
 public int doStartTag() throws JspTagException {
  return SKIP_BODY;
 }

 public int doEndTag() throws JspTagException {
  try {
   StringBuffer out = new StringBuffer();
   out.append("<!------------------------------ start pageTag ------------------------------>\r\n");
   out.append("<script type=\"text/javascript\" language=\"javaScript\">\r\n");
   out.append(" function turn"+count+"(control,aa){\r\n");
   out.append("  var indexint=parseInt(document.getElementById(\"currp"+count+"\").innerHTML);\r\n");
   out.append("  var countpage=parseInt(document.getElementById(\"countpage"+count+"\").innerHTML);\r\n");
   out.append("  if(control==\"first\"){\r\n");
   out.append("      if(indexint==1||indexint==0) {\r\n");
   //out.append("       alert(\"這是首頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");
   out.append("   indexint = 1;\r\n");
   out.append("  }if(control==\"previous\"){\r\n");
   out.append("      if(indexint==1||indexint==0) {\r\n");
   //out.append("       alert(\"這是首頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");   
   out.append("   indexint = indexint-1;\r\n");
   out.append("  }if(control==\"next\"){\r\n");
   out.append("      if(indexint==countpage) {\r\n");
   //out.append("       alert(\"這是尾頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");   
   out.append("   indexint = indexint+1;\r\n");
   out.append("  }if(control==\"last\"){\r\n");
   out.append("      if(indexint==countpage) {\r\n");
   //out.append("       alert(\"這是尾頁!\");\r\n");
   out.append("       return;\r\n");
   out.append("      } \r\n");    
   out.append("   indexint = parseInt(document.getElementById(\"countpage"+count+"\").innerHTML);\r\n");
   out.append("  }document."+tarForm+".currPage.value=indexint; \r\n");
   out.append("  document."+tarForm+".action=\""+tarAction+"\";\r\n");
   out.append("  document."+tarForm+".target=\""+tarFrame+"\";\r\n");
   out.append("  document."+tarForm+".submit();\r\n");
   out.append(" }\r\n");
   out.append("    function goTo"+count+"(){\r\n");
   out.append("      var re =   /^\\+?[1-9][0-9]*$/;\r\n");
   out.append("      var obj=  document."+tarForm+".currPage;\r\n");
   out.append("      var countPage= document.getElementById(\"countpage"+count+"\").innerHTML;\r\n");
   out.append("      if (!re.test(obj.value))\r\n");
   out.append("        {\r\n");
   out.append("          alert(\"請輸入正確的頁數\");\r\n");
   out.append("          obj.focus();\r\n");
   out.append("        }else{\r\n");
   out.append("          if(countPage<obj.value) obj.value=countPage;\r\n");
   out.append("          document."+tarForm+".action=\""+tarAction+"\";\r\n");
   out.append("    document."+tarForm+".target=\""+tarFrame+"\";\r\n");
   out.append("    document."+tarForm+".submit();\r\n");
   out.append("        }\r\n");
   out.append("    }\r\n");
   
   out.append("</script>\r\n");
   
   out.append("      <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n");
   out.append("        <tr> \r\n");
   out.append("          <td width=\"20\" height=\"25\" align=\"right\"><img src=\"/jjxf_MP/image/page/pic02.gif\" width=\"20\" height=\"11\"></td>\r\n");
   out.append("          <td class=\"biao\">查詢結果 共<span class=\"text\"> <span class=\"text\"><label id=\"icount"+count+"\">0</label></span> \r\n");
   out.append("            </span>條記錄,第<span class=\"text\"><label id=\"currp"+count+"\">0</label>/<label id=\"countpage"+count+"\">0</label></span> 頁</td>\r\n");
   out.append("          <td align=\"right\"> <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n");
   out.append("              <tr> \r\n");
   out.append("                <td width=\"18\"><a href=\"javascript:void(0)\"  οnclick=\"turn"+count+"('first',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/sy1.gif\" alt=\"首頁\" name=\"firstpage"+count+"\" id=\"firstpage"+count+"\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"48\"><a href=\"javascript:void(0)\"  οnclick=\"turn"+count+"('previous',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page//syy1.gif\" alt=\"上一頁\" name=\"previouspage"+count+"\" id=\"previouspage"+count+"\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"48\"><a href=\"javascript:void(0)\"  οnclick=\"turn"+count+"('next',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/xyy1.gif\" alt=\"下一頁\" name=\"nextpage"+count+"\" id=\"nextpage"+count+"\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("                <td width=\"18\"><a href=\"javascript:void(0)\"  οnclick=\"turn"+count+"('last',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/wy1.gif\" alt=\"尾頁\" name=\"lastpage"+count+"\" id=\"lastpage"+count+"\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
   out.append("          <td align=\"left\" class=\"STYLE2\">&nbsp;轉到第 <input type=\"text\" name=\"currPage\" id=\"currPage\" value=\"1\" style=\"width:30px\">頁&nbsp;<input type=\"button\" name=\"go\" value=\"GO\" onClick=\"goTo"+count+"();\"></td>\r\n");
   out.append("              </tr>\r\n");
   out.append("            </table></td>\r\n");
   out.append("        </tr>\r\n");
   out.append("      </table>\r\n");
   out.append("<!------------------------------ end pageTag ------------------------------>\r\n");
   pageContext.getOut().write(out.toString());  
  } catch (IOException e) {
   e.printStackTrace();
  }
  return EVAL_PAGE;
 }

 public void doInitBody() throws JspTagException {
 }

 public void setBodyContent(BodyContent bodyContent) {
 }

 public String getMethod() {
  return method;
 }

 public void setMethod(String method) {
  this.method = method;
 }

 public String getTarAction() {
  return tarAction;
 }

 public void setTarAction(String tarAction) {
  this.tarAction = tarAction;
 }

 public String getTarFrame() {
  return tarFrame;
 }

 public void setTarFrame(String tarFrame) {
  this.tarFrame = tarFrame;
 }

 public String getTarForm() {
  return tarForm;
 }

 public void setTarForm(String tarForm) {
  this.tarForm = tarForm;
 }

 public String getCount() {
  return count;
 }

 public void setCount(String count) {
  this.count = count;
 }
 
 
 
}

二在WEB-INFO下新建一個文件名爲tld,並創建一個tyTag.tld

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
 <tlibversion>1.2</tlibversion>
 <jspversion>1.1</jspversion>
 <shortname>tyTag</shortname>
 <uri>/tyTag</uri>
 <tag>
  <name>page</name>
  <tagclass>log.tags.PageTag</tagclass>
  <bodycontent>JSP</bodycontent>
  <attribute>
   <name>tarAction</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>tarFrame</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
 </tag>
 <tag>
  <name>pageForMore</name>
  <tagclass>log.tags.PageTagForMoreForm</tagclass>
  <bodycontent>JSP</bodycontent>
  <attribute>
   <name>tarAction</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>tarFrame</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>tarForm</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>count</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
 </tag>
  <tag>
  <name>base</name>
  <tagclass>log.tags.PageContextTag</tagclass>
  <bodycontent>JSP</bodycontent>
 </tag>
</taglib>

三創建查詢結果類


package util;

import java.util.List;

/**
 * 查詢結果
 * @author Administrator
 *
 */
public class QueryResult {
 public List vector; // 查詢結果集合
 public String countRows; //行數
 public String countPages; //頁數
 public List getVector() {
  return vector;
 }
 public void setVector(List vector) {
  this.vector = vector;
 }
 public String getCountRows() {
  return countRows;
 }
 public void setCountRows(String countRows) {
  this.countRows = countRows;
 }
 public String getCountPages() {
  return countPages;
 }
 public void setCountPages(String countPages) {
  this.countPages = countPages;
 }
 
}

四在公共類裏面加上

package util;

public class testUtil {
 /** 分頁顯示時每頁最多顯示的記錄數 */
 public static final short MAX_RESULT_PER_PAGE = 10;
 /**
  * 根據記錄數得到頁數
  *
  * @param rows
  *            總記錄數
  * @param max_per_page
  *            每頁顯示最大記錄數
  * @return String
  */
 public static String getCountPage(Integer rows, int max_per_page) {
  int temp = (int) (rows.intValue() / max_per_page);
  if (rows.intValue() % max_per_page != 0)
   temp++;
  return temp + "";
 }
}

五、業務層的代碼

List<Register> list = hibernateTemplateDao.page_list(hql.toString(),
    table, currPage, Constants.MAX_RESULT_PER_PAGE);
  qs.setCountRows(totalRecord);
  qs.setCountPages(GeneralUtil.getCountPage(new Integer(Integer
    .parseInt(qs.getCountRows())), Constants.MAX_RESULT_PER_PAGE));
  for (Register reg : list) {
   reg.setCurrentStateCh(GeneralUtil.getCurrentChState(reg
     .getCurrentState()));
  }
  qs.setVector(list);

六、邏輯層調用

@Action(value = "/commonQuery/commonQueryTable", results = { @Result(name = "commonQueryTable", location = "/page/caseQuery/commonQuery_main_table.jsp") })
 public String commonQueryTable() throws Exception {
  try {
   QueryResult qs = commonQueryService.getAllCaseRegister(register,
     regDateBegin, regDateEnd, currPage);
   if (qs != null && qs.getCountRows().equals("0")) {
    this.setCurrPage("0");
   }

   this.setQueryResult(qs);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return "commonQueryTable";
 }

七、jsp頁面調用

初始化頁面

<table width="100%" border="0" cellspacing="0" cellpadding="0"
        cellpadding="1">

        <tr>
         <td>
          <tytag:page tarFrame="frame1"
           tarAction="${base}/caseCheck/queryCaseCheckTable.shtml"></tytag:page>
         </td>
        </tr>

       </table>

顯示頁面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/tags/tytag" prefix="tytag"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>信訪登記</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

 <script type="text/javascript" src="<%=basePath%>javascript/jquery-1.4.min.js"></script>
  <script type="text/javascript" src="<%=basePath%>javascript/page.js"></script>
<link rel="stylesheet" href="<%=basePath%>css/main.css" />
<style type="text/css">
.textBg{
background-color:#e9e6e6 ;
}

.t1{
color:#0000FF ;
text-decoration:none ;
}
td{
text-align:center ;

}
.t2{
color:#000000 ;
text-decoration:none ;
}

.textonlyread{
 background:#F0F0F0
}
fieldset legend {
color:#1E7ACE;
font-weight:bold;

}
.tr:hover {
 border: #99BBE8 1px solid;
 background: #99BBE8;
}

.STYLE1 {color: #FF0000}

</style>
</head>
<script type="text/javascript"> 
$(document).ready(function(){
  loadtable();
})
function fillCurrentId(id){
   window.parent.document.getElementById("registerId").value = id;
}
</script>
<body bgcolor="#FFFFFF">
<s:form>
<s:hidden name="countPage" id="countPage" />
<s:hidden name="countRow" id="countRow" />
<s:hidden name="currPage" id="currPage" />
<table width="99%" align="center" border="1" cellspacing="0" cellpadding="3">
    <tr style="background-image: url('<%=basePath %>image/one_result.jpg')">
        <th scope="col">序號</th>
  <th scope="col">選擇</th>
        <th scope="col">登記日期</th>
        <th scope="col">登記人</th>
        <th scope="col">被信訪人</th>
  <th scope="col">辦理狀態</th>
        <th scope="col">登記部門</th>
  <th scope="col">承辦部門</th>
        <th scope="col">主要違紀線索</th>
    </tr>
    <s:iterator value="vector" id="regInfo" status="st">
          <tr class="tr" bgcolor="<s:if test='#st.odd==true'></s:if><s:else>#eceaeb</s:else>">
          <td>
             &nbsp;<s:property value="#st.index+1"/>
          </td>
          <td>
           <input type="radio" name="radiobutton" value="<s:property value='id'/>" οnclick="fillCurrentId('${regInfo.id }')"/>
          </td>
          <td>
           &nbsp;<s:date name="regTime" format="yyyy-MM-dd"/>
          </td>
          <td>
           &nbsp; <s:property value="regUserName"/>
          </td>
           <td>
            &nbsp;<s:property value="bePetName"/>
          </td>
           <td>
            &nbsp;<s:property value="currentStateCh"/>
          </td>
          <td>
            &nbsp;<s:property value="regUnit.unitName"/>
          </td>
          <td>
            &nbsp;<s:property value="currentUnit.unitName"/>
          </td>
          <td title="<s:property value='brief'/>">
            <s:if test="brief != null && brief.length() >14">
                 <s:property value="brief.substring(0,14)"/>...
            </s:if>
            <s:else>
                 &nbsp;<s:property value="brief"/>
            </s:else>
          </td>
          </tr>
    </s:iterator>
</table>
</s:form>
</body>
</html>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章