1、准备tld文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> <description><![CDATA["To make it easier to access dynamic data; the Apache Struts framework includes a library of custom tags. The tags interact with the framework‘s validation and internationalization features; to ensure that input is correct and output is localized. The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description> <display-name>LetGo</display-name> <tlib-version>1.0</tlib-version> <short-name>voice</short-name> <uri>/page-tags</uri> <tag> <description><![CDATA[Render a paging link tag]]></description> <name>paging</name> <tag-class>com.page.PagingAction</tag-class> <body-content>empty</body-content> <attribute> <description><![CDATA[current page index]]></description> <name>currPage</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description><![CDATA[The total page]]></description> <name>totalPage</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description><![CDATA[The page max]]></description> <name>pageMax</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description><![CDATA[total link number for show]]></description> <name>count</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
2、写相应的处理类 继承的是 jsp-api.jar 中 SimpleTagSupport,在该类中同时也可以设置各个按钮的js事件....
1 package com.page; 2 3 import java.io.IOException; 4 5 import javax.servlet.jsp.JspException; 6 import javax.servlet.jsp.JspWriter; 7 import javax.servlet.jsp.tagext.SimpleTagSupport; 8 9 import com.opensymphony.xwork2.ActionContext; 10 11 public class PagingAction extends SimpleTagSupport{ 12 13 private String currPage; 14 private String totalPage; 15 private String pageMax; 16 private String count; 17 18 /** 19 * 返回 20 * @return 21 */ 22 public String getCurrPage() { 23 return currPage; 24 } 25 26 /** 27 * 设置 28 * @param 29 */ 30 public void setCurrPage(String currPage) { 31 this.currPage = currPage; 32 } 33 34 /** 35 * 返回 36 * @return 37 */ 38 public String getTotalPage() { 39 return totalPage; 40 } 41 42 /** 43 * 设置 44 * @param 45 */ 46 public void setTotalPage(String totalPage) { 47 this.totalPage = totalPage; 48 } 49 50 /** 51 * 返回 52 * @return 53 */ 54 public String getPageMax() { 55 return pageMax; 56 } 57 58 /** 59 * 设置 60 * @param 61 */ 62 public void setPageMax(String pageMax) { 63 this.pageMax = pageMax; 64 } 65 66 /** 67 * 返回 68 * @return 69 */ 70 public String getCount() { 71 return count; 72 } 73 74 /** 75 * 设置 76 * @param 77 */ 78 public void setCount(String count) { 79 this.count = count; 80 } 81 82 @Override 83 public void doTag() throws JspException, IOException { 84 JspWriter write = getJspContext().getOut(); 85 StringBuffer sb = new StringBuffer(); 86 sb.append("<div>") 87 .append("<button name=\"first\"><<</button>") 88 .append("<button name=\"pre\"><</button>") 89 .append("<input type=\"text\" name=\"inputName\" style=\"width: 45px;\"/>") 90 .append("<label>"+getValueFromStack(this.getCurrPage())+"/共"+getValueFromStack(this.getTotalPage())+"</label>") 91 .append("<button name=\"next\">></button>") 92 .append("<button name=\"last\">>></button>") 93 .append("<div>"); 94 write.write(sb.toString()); 95 } 96 97 /** 98 * 在值栈中取出值 99 * @param str 100 * @return 101 */ 102 private String getValueFromStack(String str){ 103 //取出时不要加%{},直接是存放在值栈中的变量名,此处获取到str是从页面标签传过的值,jia 104 //加%{}用以区分这个是从值栈中取出,对于不加%{}的属性表示表单提交的变量名称 相当于<input 中的 name属性 105 //action中的get方法名与之相同,则可获取由标签传递的值 106 if(str.startsWith("%{")){ 107 str = str.substring(2,str.length()-1); 108 } 109 return (String) ActionContext.getContext().getValueStack().findValue(str); 110 } 111 112 }
3、在jsp页面引用改标签
OK!!!
时间: 2024-10-26 02:01:16