package com.frameworkset.common.tag.pager.tags; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException; import org.apache.log4j.Logger; import com.frameworkset.common.tag.BaseTag; import com.frameworkset.common.tag.pager.TextListInfo; import com.frameworkset.common.tag.pager.TextSpliting; /** * <p>Title: TextPagerTag</p> * * <p>Description: * 文本分页标签,属性如下: scope-text的有效范围,分别request、session、pageContext,缺省为request parameter—request参数名称 attribute-属性名称,与request、session、pageContext组合使用 text-文本值,直接指定待分页的文本,如果不指定则按相关属性从request、session、pageCongtext中获取属性值 size-每页显示的文本段长度,缺省为200 id-标签标识 </p> * * <p>Copyright: Copyright (c) 2005</p> * * <p>Company: </p> * * @author biaoping.yin * @version 1.0 */ public class TextPagerTag extends BaseTag { private Logger log = Logger.getLogger(TextPagerTag.class); /** * 请求范围 * request 缺省 * session * pageContext */ private String scope; /**request参数名称,与request组合使用*/ private String parameter; /**属性名称,与request、session、pageContext组合使用*/ private String attribute; /**文本*/ private String text; /** * 每页显示的文本段长度 */ private int size = 200; /** * 当前页面号码 */ private int pageNumber; /**分页信息*/ private TextListInfo listInfo; private StringBuffer pageURI; private StringBuffer queryString; public static void main(String[] args) { TextPagerTag textpagertag = new TextPagerTag(); } public int doStartTag() { if (scope == null) { scope = "request"; } HttpServletRequest request = this.getHttpServletRequest(); HttpSession session = request.getSession(false); if (text == null) { if (parameter != null) { text = request.getParameter(parameter); } if (this.attribute != null) { Object value = null; if (scope.equals("request")) { value = request.getAttribute(attribute); } else if (session != null && scope.equals("session")) { value = session.getAttribute(attribute); } else { value = pageContext.getAttribute(attribute); } this.text = (String) value; } } if (text == null) { text = ""; } try { this.pageNumber = Integer.parseInt(request.getParameter( "pageNumber").trim()); } catch (Exception e) { log.error(e); e.printStackTrace(); pageNumber = 1; } listInfo = TextSpliting.splitStringByPageNumber(text,pageNumber,size); pageURI = new StringBuffer(request.getRequestURI()); queryString = new StringBuffer(0); return EVAL_BODY_INCLUDE; } public void addParam(String name) { HttpServletRequest request = this.getHttpServletRequest(); // HttpSession session = request.getSession(false); String[] values = request.getParameterValues(name); if(values != null) { for(int i = 0; i < values.length; i ++) { this.addParam(name,values[i]); } } else { String paravalue = (String)request.getAttribute(name); if(paravalue != null) this.addParam(name,paravalue); } } public void addParam(String name,String value) { if(queryString.length() > 0) { this.queryString.append("&"+name + "=" + java.net.URLEncoder.encode(value)); } else this.queryString.append(name + "=" + java.net.URLEncoder.encode(value)); } protected String getPageURL(int pageNumber) { StringBuffer pageUrl = new StringBuffer(pageURI.toString()); if(queryString.length() > 0) pageUrl.append("?") .append(queryString.toString()) .append("&pageNumber=") .append(pageNumber); else pageUrl.append("?") .append("pageNumber=") .append(pageNumber); return pageUrl.toString(); } protected String getPageURI() { return pageURI.toString(); } protected String getParams() { return queryString.toString(); } public int doEndTag() throws JspException { this.text = null; return super.doEndTag(); } public String getScope() { return scope; } public String getAttribute() { return attribute; } public String getParameter() { return parameter; } public String getText() { return text; } public int getPageNumber() { return pageNumber; } public int getSize() { return size; } public TextListInfo getListInfo() { return listInfo; } public void setScope(String scope) { this.scope = scope; } public void setAttribute(String attribute) { this.attribute = attribute; } public void setParameter(String parameter) { this.parameter = parameter; } public void setText(String text) { this.text = text; } public void setSize(int size) { this.size = size; } public void setListInfo(TextListInfo listInfo) { this.listInfo = listInfo; } }