<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA

    人生若只如初見,何事秋風悲畫扇。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      50 隨筆 :: 25 文章 :: 157 評論 :: 0 Trackbacks
    發現在系統中有好多寫得很好的代碼,也不知道是哪位前輩留下來的.整理一下...
    自定義分頁標簽庫

    1:在配置文件中配置
    <!--?self?Tag?Library?Descriptors?-->
    ??
    <taglib>
    ????
    <taglib-uri>/WEB-INF/self-html.tld</taglib-uri>
    ????
    <taglib-location>/WEB-INF/self-html.tld</taglib-location>
    ??
    </taglib>

    2:在self-html.tld中page標簽的配置
    <tag>
    ????????
    <name>page</name>
    ????????
    <tagclass>com.jbbis.netedu.common.util.taglib.PageTag</tagclass>
    ????????
    <bodycontent>empty</bodycontent>
    ????????
    <info>tag?here</info>
    ????????
    <attribute>
    ????????
    <name>name</name>
    ????????
    <required>true</required>
    ????????
    <rtexprvalue>false</rtexprvalue>
    ????????
    </attribute>????
    ????????
    <attribute>
    ????????
    <name>pageNum</name>
    ????????
    <required>false</required>
    ????????
    <rtexprvalue>false</rtexprvalue>
    ????????
    </attribute>????????
    ????????
    <attribute>
    ????????
    <name>method</name>
    ????????
    <required>false</required>
    ????????
    <rtexprvalue>false</rtexprvalue>
    ????????
    </attribute>????
    ????????
    <attribute>
    ????????
    <name>methodValue</name>
    ????????
    <required>false</required>
    ????????
    <rtexprvalue>true</rtexprvalue>
    ????????
    </attribute>????
    ????????
    <attribute>
    ????????
    <name>form</name>
    ????????
    <required>true</required>
    ????????
    <rtexprvalue>false</rtexprvalue>
    ????????
    </attribute>????????
    ????????
    <attribute>
    ????????
    <name>action</name>
    ????????
    <required>flase</required>
    ????????
    <rtexprvalue>true</rtexprvalue>
    ????????
    </attribute>
    ????????
    <attribute>
    ????????
    <name>returnLevel</name>
    ????????
    <required>flase</required>
    ????????
    <rtexprvalue>true</rtexprvalue>
    ????????
    </attribute>????????????????????????????????????
    ????
    </tag>

    其實從這兒也可以看到在PageTag文件中是一些什么值了...

    3:PageTag中的具體操作(精華全部在這兒啦)
    /*
    ?*?Created?on?2004-6-25
    ?*
    ?
    */

    package?com.jbbis.netedu.common.util.taglib;

    import?java.io.IOException;

    import?javax.servlet.jsp.JspException;
    import?javax.servlet.jsp.JspWriter;
    import?javax.servlet.jsp.tagext.TagSupport;

    import?com.jbbis.netedu.common.page.NullPage;
    import?com.jbbis.netedu.common.page.Page;

    /**
    ?*?
    @author?leo_deng
    ?*
    ?
    */

    public?class?PageTag?extends?TagSupport?{
    ????

    ????
    /*?(non-Javadoc)
    ?????*?@see?javax.servlet.jsp.tagext.Tag#doStartTag()
    ?????
    */

    ????
    private?String?name;
    ????
    private?String?pageNum="pageNum";
    ????
    private?String?method="method";
    ????
    private?String?methodValue;
    ????
    private?String?form="mainForm";
    ????
    private?String?action;
    ????
    private?String?returnLevel;
    ????
    ????
    private?final?int?CONST_FIRST=1;
    ????
    private?final?int?CONST_NEXT=2;
    ????
    private?final?int?CONST_PRIOR=3;
    ????
    private?final?int?CONST_LAST=4;
    ????
    ????
    ????
    ????
    ????
    public?int?doStartTag()?throws?JspException?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????try{
    ????????????JspWriter?out?
    =?pageContext.getOut()?;
    ????????????Page?page
    =(Page)pageContext.getRequest().getAttribute(name);
    ????????????
    if(page==null)
    ????????????????page
    =NullPage.instance();
    ????????????out.print(getHtml(page.getPageNumber(),page.getPageCount()));
    ????????????out.print(getJs(page.getPageNumber(),page.getPageCount()));
    ????????????
    //jspwriter是一個隱含對象,用于向jsp網頁輸出內容。輸出的目標由
    ????????????
    //?pagecontext.getout提供
    ????????????
    ????????????
    //向jsp網頁上下文輸出
    ??????????}
    catch(IOException?ioException){
    ????????????
    throw?new?JspException(ioException.getMessage()?);
    ??????????}
    //catch
    ??????????return(SKIP_BODY);
    ????}

    ????
    /*
    ?????*?<
    ?????*?<!--
    ?????*?function?page_next(){
    ?????*??form.action=""
    ?????*?????form.pageNum=""
    ?????*?????form.method.value=""
    ?????*?????form.submit;
    ?????*?
    ?????*?}
    ?????*?function?page_prior()
    ?????*?function?page_first()
    ?????*?funciotn?page_last()
    ?????*?
    ?????*?//-->
    ?????*?<div?class="listbox_page">
    ????????????<a?class="page"?><img?src="public/icon/first.gif"?alt="首頁"?align="absmiddle"?border="0"?onclick="page_first()"/></a>
    ????????????<a?class="page"?><img?src="public/icon/previous.gif"?alt="上頁"?align="absmiddle"?border="0"?onclick="page_first()"/></a>
    ????????????第<input?class="page_number"?name="pageNum"?value="">????<img?src="page_go.gif"?class="page_go">頁
    ????????????<a?class="page"?><img?src="public/icon/next.gif"?alt="下頁"?align="absmiddle"?border="0"/?onclick="page_next()"></a>
    ????????????<a?class="page"?><img?src="public/icon/last.gif"?alt="末頁"?align="absmiddle"?border="0"/?onclick="page_prior()"></a>
    ????????????共?<span?class="page_sum">1000</span>?頁?
    ????????</div>
    ?????*
    ?????*?
    */

    ????
    private?String?getJs(int?pageNum,int?totalNum){
    ????????StringBuffer?sb
    =new?StringBuffer();
    ????????sb.append(
    "\n<script?language=\"JavaScript\">\n<!--");
    ????????????sb.append(printFunction(
    "page_first",pageNum,totalNum,CONST_FIRST));
    ????????????sb.append(printFunction(
    "page_next",pageNum,totalNum,CONST_NEXT));
    ????????????sb.append(printFunction(
    "page_prior",pageNum,totalNum,CONST_PRIOR));
    ????????????sb.append(printFunction(
    "page_last",pageNum,totalNum,CONST_LAST));
    ????????????getGoJs(sb,pageNum,totalNum);
    ????????sb.append(
    "\n?//-->\n</script>");

    ????????
    return?sb.toString();
    ????}

    ????
    private?void?getGoJs(StringBuffer?sb,int?pageNum,int?totalNum){
    ????????sb.append(
    "function?page_go(obj){\n");
    ????????sb.append(
    "var?page_number=document.getElementById(\"page_number\");\n");
    ????????sb.append(
    "if(?page_number.value?!=?new?Number(page_number.value))return?alert(\"請輸入正確的頁數\");\n");
    ????????sb.append(
    "if(page_number.value<1)?page_number.value=1;if(page_number.value>");
    ????????sb.append(totalNum);
    ????????sb.append(
    ")page_number.value=");
    ????????sb.append(totalNum);
    ????????sb.append(
    ";\n");
    ????????sb.append(
    "if(page_number.value!="+pageNum+")");
    ????????sb.append(
    "submitForPageNum(obj);\n");
    ????????sb.append(
    "}");
    ????}

    ????
    private?StringBuffer?printFunction(String?function,int?pageNumber,int?totalNumber,int?pageConst){
    ????????StringBuffer?sb
    =new?StringBuffer();
    ????????sb.append(
    "\nfunction?"+function+"(){");
    ????????sb.append(
    "\nevent.returnValue=false;");
    ????????sb.append(printAction());
    ????????sb.append(printMethod());
    ????????
    //sb.append("\n"+this.form+".submit();\n}");
    ????????if(totalNumber>1){
    ????????????
    switch(pageConst){
    ????????????????
    case?CONST_FIRST:
    ????????????????????
    if(pageNumber>1){
    ????????????????????????sb.append(printPageNum(String.valueOf(
    1)));
    ????????????????????????sb.append(
    "\n?submitForPageNum("+this.form+");");
    ????????????????????}

    ????????????????????
    break;
    ????????????????
    case?CONST_LAST:
    ????????????????????
    if(pageNumber<totalNumber){
    ????????????????????????sb.append(printPageNum(String.valueOf(totalNumber)));
    ????????????????????????sb.append(
    "\n?submitForPageNum("+this.form+");");
    ????????????????????}

    ????????????????????
    break;
    ????????????????
    case?CONST_PRIOR:
    ????????????????????
    if(pageNumber>1){
    ????????????????????????sb.append(printPageNum(String.valueOf(pageNumber
    -1)));
    ????????????????????????sb.append(
    "\n?submitForPageNum("+this.form+");");
    ????????????????????}

    ????????????????????
    break;????????????????????????
    ????????????????
    case?CONST_NEXT:
    ????????????????????
    if(pageNumber<totalNumber){
    ????????????????????????sb.append(printPageNum(String.valueOf(pageNumber
    +1)));
    ????????????????????????sb.append(
    "\n?submitForPageNum("+this.form+");");
    ????????????????????}

    ????????????????????
    break;
    ????????????}

    ????????}

    ????????
    ????????sb.append(
    "\n}");
    ????????
    return?sb;????????
    ????}

    ????
    /*
    ????private?StringBuffer?printFunction(String?function,String?pageNum,int?pageConst){
    ????????StringBuffer?sb=new?StringBuffer();
    ????????sb.append("\nfunction?"+function+"(){");
    ????????sb.append("\nevent.returnValue=false;");
    ????????sb.append(printAction());
    ????????sb.append(printMethod());
    ????????sb.append(printPageNum(pageNum));
    ????????//sb.append("\n"+this.form+".submit();\n}");

    ????????????????
    ????????????????sb.append("\n?submitForPageNum("+this.form+");\n}");

    ????????
    ????????sb.append("\n}");
    ????????
    ????????return?sb;
    ????}
    ????
    */

    ????
    private?String?printAction(){
    ????????
    if(this.action!=null)
    ????????????
    return?("\n"+this.form+".action=\""+action+"\";");
    ????????
    else
    ????????????
    return?"";
    ????}

    ????
    private?String?printMethod(){
    ????????
    if(this.methodValue!=null)
    ????????????
    return?("\n"+this.form+"."+this.method+".value=\""+this.methodValue+"\";");
    ????????
    else
    ????????????
    return?"";
    ????}
    ????
    ????
    private?String?printPageNum(String?num){
    ????????
    return?"\n"+this.form+"."+this.pageNum+".value=\""+num+"\";";
    ????}

    ????
    private?String?getHtml(int?pageNum,int?totalNum){
    ????????StringBuffer?sb
    =new?StringBuffer();
    ????????sb.append(
    "\n<a?class=\"page\"?href=\"javascript:void(0)\"?onclick=\"page_first()\"?><img?src=\"public/icon/first.gif\"?alt=\"首頁\"?align=\"absmiddle\"?border=\"0\"?/></a>");
    ????????sb.append(
    "\n<a?class=\"page\"?href='javascript:void(0)'?onclick='page_prior()'?><img?src=\"public/icon/previous.gif\"?alt=\"上頁\"?align=\"absmiddle\"?border=\"0\"?/></a>");
    ????????sb.append(
    "\n第<input?id=\"page_number\"?class=\"page_number\"?name=\"pageNum\"?value=\"");
    ????????sb.append(String.valueOf(pageNum));
    ????????sb.append(
    "\"><button?class='page_go'?onclick='page_go(this.form);'></button>頁????");
    ????????//sb.append(""<img?src=\"page_go.gif\"?class=\"page_go\">");
    ????????sb.append("\n<a?class=\"page\"?href=\"javascript:void(0)\"?onclick=\"page_next()\"><img?src=\"public/icon/next_page.gif\"?alt=\"下頁\"?align=\"absmiddle\"?border=\"0\"/></a>");
    ????????sb.append(
    "\n<a?class=\"page\"?href=\"javascript:void(0)\"?onclick=\"page_last()\"><img?src=\"public/icon/last.gif\"?alt=\"末頁\"?align=\"absmiddle\"?border=\"0\"/></a>");
    ????????sb.append(
    "\n共?<span?class=\"page_sum\">");
    ????????sb.append(String.valueOf(totalNum));
    ????????sb.append(
    "</span>?頁");
    ????????
    return?sb.toString();
    ????}


    ????
    /**
    ?????*?
    @return?Returns?the?pageNum.
    ?????
    */

    ????
    public?String?getPageNum()?{
    ????????
    return?pageNum;
    ????}

    ... ....(other getter and setter method ^_^)????
    }


    4:在JSP布面中導入:
    <%@?taglib?uri="/WEB-INF/self-html.tld"?prefix="netedu"?%>

    5:在JSP頁面中引用:
    <form?name="newsForm"?method="post"?action="<%=request.getContextPath()?%>/portal/newsAction.page"?id="newsForm">
    <!--?TIP008:
    ??翻頁部分
    ?
    -->
    ???
    <div?class="listbox_page">
    ????
    <netedu:page?name="page"?form="newsForm"?/>
    ???
    </div>
    <!--?TIP008:END-->
    ?
    </form>

    6:page文件

    7:其它
    7.1
    可以注意到在標簽的定義文件中用到了名為page_go的css層來美化界面,可能是出于滿足不同用戶對界面的不同要求所以在此沒有對此css定義,你可以在JSP布面中重寫此css.這兒有個可以參考一下.下載
    7.2
    根據標簽的定義可以看到,此page應該放到form中.
    7.3
    根據在標簽庫中的
    Page?page=(Page)pageContext.getRequest().getAttribute(name);

    語句,可見page應該在request.setAttribute("pageattribute",page);中定義.

    7.4
    如何通過對DB的操作得到了page ?通過DB操作可以獲得一系統的data(應該注意到了在page文件夾中有個data屬性,高人就是高人^_^),當然在得到這些data之前,先可能得進行一系統邏輯處理,比如說當前頁碼(pagenum),頁長(pagesize)等等.通過這些數據就可以得到一個page實例了! ~ ~ :?)

    ... ...

    相關:一個相當好的自定義標簽---分頁(二)

    posted on 2006-03-13 18:50 Jkallen 閱讀(4721) 評論(5)  編輯  收藏 所屬分類: 其它開源

    評論

    # re: 一個相當好的自定義標簽---分頁(一) 2006-03-14 10:09 keith
    代碼不全,下載的東西也不對應  回復  更多評論
      

    # re: 一個相當好的自定義標簽---分頁(一) 2006-03-14 10:17 Jkallen
    現在CSS可以下載了.
    我會找個時間再寫"分頁(二)"的.
    昨天正有事情呢^_^  回復  更多評論
      

    # re: 一個相當好的自定義標簽---分頁(一) 2007-07-20 15:52 kk
    com.jbbis???
    你是青鳥的嗎?  回復  更多評論
      

    # re: 一個相當好的自定義標簽---分頁(一) 2009-03-19 10:39 渤海
    你的import com.jbbis.netedu.common.page.NullPage;
    import com.jbbis.netedu.common.page.Page;
    是什么啊!呵呵,想不出來  回復  更多評論
      

    # re: 一個相當好的自定義標簽---分頁(一) 2009-07-20 11:51 df
    NullPage是什么?  回復  更多評論
      

    主站蜘蛛池模板: 国产成人免费在线| 免费少妇a级毛片| 亚洲欧美黑人猛交群| 免费在线观看你懂的| 99视频免费在线观看| 亚洲精品中文字幕麻豆| 四虎影院免费在线播放| a级毛片黄免费a级毛片| 亚洲一区欧洲一区| 亚洲三区在线观看无套内射| 无码乱肉视频免费大全合集| 一级黄色免费毛片| 亚洲人成在线中文字幕| 亚洲天堂在线视频| 99在线视频免费观看视频 | 亚洲成a人片在线观看无码| 亚洲精品在线免费观看| 特黄aa级毛片免费视频播放| 91大神亚洲影视在线| 亚洲人成网站色在线入口| 麻豆最新国产剧情AV原创免费| 成年女人A毛片免费视频| 亚洲色欲色欲www在线播放 | 久久亚洲AV成人无码软件| 免费人成网站7777视频| 中文字幕无码免费久久99| 在线看片免费人成视频福利| 亚洲另类无码专区首页| 91久久亚洲国产成人精品性色| 亚洲精品国产精品乱码不卡| 人妻视频一区二区三区免费| 无码精品国产一区二区三区免费| 色屁屁在线观看视频免费| 亚洲va成无码人在线观看| 久久精品国产亚洲夜色AV网站| 免费jjzz在线播放国产| 91在线视频免费播放| 色欲国产麻豆一精品一AV一免费 | 国产精品亚洲а∨无码播放麻豆 | 国产无遮挡色视频免费视频| 99国产精品永久免费视频|