`
xmx0632
  • 浏览: 118238 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

翻页标签

阅读更多
使用的时候像这样:
<form action="<%=request.getContextPath();%>/pageAction.do" name ="hello" method="post" >
<test:pager formName="hello"/>
</form>


form的action名字随便写,只要给tag传进formname就可以了。
不过组装显示内容的action里要根据从页面得到的(pageIndex/pageTotal/pageNo)来组装内容列表。
------------------------------------------------------------------------------
等写完整了把完整的放上来,待续......


/*
 * Created on 2004-8-6
 * author:xmx
 */
package demo.pagetag;

public class PageInfo {

	private int _recordTotal;
	private int _pageTotal;
	private int _currentPage;
	private int _pageSize;

	/**
	 * @return
	 */
	public int getRecordTotal(); {
		return _recordTotal;
	}

	/**
	 * @param i
	 */
	public void setRecordTotal(int i); {
		_recordTotal = i;
	}

	/**
	 * @return
	 */
	public int getCurrentPage(); {
		return _currentPage;
	}

	/**
	 * @return
	 */
	public int getPageTotal(); {
		int tmp=_recordTotal/_pageSize;
		_pageTotal=(_recordTotal%_pageSize==0);?tmp:tmp+1;
		return _pageTotal;
	}

	/**
	 * @param i
	 */
	public void setCurrentPage(int i); {
		_currentPage = i;
	}

	/**
	 * @param i
	 */
	public void setPageTotal(int i); {
		_pageTotal = i;
	}

	/**
	 * @return
	 */
	public int getPageSize(); {
		return _pageSize;
	}

	/**
	 * @param i
	 */
	public void setPageSize(int i); {
		_pageSize = i;
	}

	/**
	 * 返回当前页起始记录
	 * @return
	 */
	public int getStartRecord(); {
		if (_pageTotal == 0); {
			return 0;
		} else {
			return (_currentPage - 1); * _pageSize + 1;
		}
	}
	
	/**
	 * 返回当前页结尾记录
	 * @return
	 */
	public int getEndRecord(); {
		if (_pageTotal == 0); {
			return 0;
		} else if (_pageTotal == _currentPage);{
			return _recordTotal;
		} else {
			return _currentPage * _pageSize ;
		}
	}
}




/*
 * Created on 2004-8-6
 * author:xmx
 */
package demo.pagetag;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.ResponseUtils;



public class PageTag extends TagSupport {	
	protected String name =null;
	protected String formName = null;
	
	

	public String getName(); {
		return name;
	}

	public void setName(String name); {
		this.name = name;
	}
	
	public String getFormName(); {
		return formName;
	}

	public void setFormName(String formName); {
		this.formName = formName;
	}

	/* (non-Javadoc);
	 * @see javax.servlet.jsp.tagext.Tag#doStartTag();
	 */
	public int doStartTag(); throws JspException {
		String pageName = name;
		if (name==null || name.trim();.equals("");); {
			pageName = "pageName";
		}
		PageInfo pInfo = (PageInfo);RequestUtils.lookup(pageContext, pageName, "request");;
		String imagePath = ((HttpServletRequest);pageContext.getRequest(););.getContextPath();;
		
		System.out.println("============== Page tag start ===========");;
		System.out.println("FormName = "+formName.trim(););;
		System.out.println("============== Page tag end ===========");;
		System.out.println();;

		if (pInfo == null);{
			System.out.println("pInfo is null ");;
			return SKIP_BODY;
		}else{
			System.out.println("pInfo.currentPage = "+pInfo.getCurrentPage(););;
		}
			
		
		StringBuffer sb = new StringBuffer();;
		createNavigateBar(sb,pInfo,imagePath);;
		createJSFunction(sb);;
		sb=sb.append("<font size=\"30\" color='red'>hello,小南</font>");;
		ResponseUtils.write(pageContext,sb.toString(););;
		
		return (SKIP_BODY);;
	}
	
	private void createJSFunction(StringBuffer sb); {
		String actionFormName = formName.trim();;		//设置Form的名称
		sb.append("<script language=\"JavaScript\">\n");;
		sb.append("function goPage(pageIndex); {\n");;
		sb.append(actionFormName + ".target=\"_self\";\n");;
		sb.append(actionFormName + ".pageIndex.value=pageIndex;\n");;
		sb.append(actionFormName + ".submit();;\n");;
		sb.append("}\n");;
		
		sb.append("function goToPage(); {\n");;
		sb.append("var page=" + actionFormName + ".pageNo.value;\n");;
		sb.append("if (new Number(page);.toString();==\"NaN\");{\n");;
		sb.append("alert(\"请输入 数 字\");;\n");;
		sb.append("return;\n");;
		sb.append("}else if(page==\"\"||page==null); {\n");;
		sb.append("alert(\"请输入 数 字\");;\n");;
		sb.append("return;\n");;
		sb.append("}\n");;
		sb.append("var pageAmount=" + actionFormName + ".pageTotal.value;\n");;
		sb.append("if (parseInt(page);>parseInt(pageAmount);); {\n");;
		sb.append("page=pageAmount;\n");;
		sb.append("}else if (parseInt(page);<1); {\n");;
		sb.append("page=1;\n");;
		sb.append("}\n");;
		sb.append("goPage(page);;\n");;
		sb.append("}\n");;
		sb.append("</script>\n");;
	}
		
	private void createNavigateBar(StringBuffer sb,PageInfo pInfo,String imagePath); {
		int currentPage = pInfo.getCurrentPage();;
		int pageTotal = pInfo.getPageTotal();;
		sb.append("<input type=\"hidden\" name=\"pageIndex\" value=\"" + currentPage + "\">");.append("\n");;
		sb.append("<input type=\"hidden\" name=\"pageTotal\" value=\"" + pageTotal + "\">");.append("\n");;
		sb.append("<table width=\"100%\" border=\"0\"><tbody><tr>");.append("\n");;
		sb.append("<td width=\"20%\" height=\"30\" align=\"center\">第" + currentPage + "页</td>");.append("\n");;
		sb.append("<td width=\"15%\" align=\"center\">共" + pageTotal + "页</td>");.append("\n");;
		sb.append("<td width=\"15%\" align=\"center\">共" +pInfo.getRecordTotal(); + "条</td>");.append("\n");;
		sb.append("<td width=\"50%\" valign=\"center\">");.append("\n");;		
		sb.append("<a href=\"javascript:goPage(1);;\" style=\"cursor:hand\">首页|  </a>");.append("\n");;
		int prevPage = 1;
		if (currentPage>=2); {
			prevPage = currentPage -1;
		}		
		sb.append("<a href=\"javascript:goPage(" + prevPage + ");;\" name=\"page\" style=\"cursor:hand\">前一页|  </a>");.append("\n");;
		int nextPage = pageTotal;
		if (currentPage<pageTotal-1); {
			nextPage = currentPage +1;
		}		
		sb.append("<a href=\"javascript:goPage(" + nextPage + ");;\" style=\"cursor:hand\">后一页|  </a>");.append("\n");;
		int lastPage = pageTotal;
		if (pageTotal<2); {
			lastPage = 1;
		}		
		sb.append("<a href=\"javascript:goPage(" + lastPage + ");;\" style=\"cursor:hand\">末页|  </a>");.append("\n");;
		sb.append("转到第<input name=\"pageNo\" type=\"text\" class=\"Input\" size=\"5\">页");.append("\n");;		
		sb.append("<a href=\"javascript:goToPage();;\" style=\"cursor:hand\">Go</a>");.append("\n");;
		sb.append("</td></tr></tbody></table>");.append("\n");;
	}
}




在action里使用的时候例子如下:
package demo.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import demo.pagetag.PageInfo;

public class ShowPageInfoAction extends Action {

	// --------------------------------------------------------- Instance Variables

	// --------------------------------------------------------- Methods

	/** 
	 * Method execute
	 * @param ActionMapping mapping
	 * @param ActionForm form
	 * @param HttpServletRequest request
	 * @param HttpServletResponse response
	 * @return ActionForward
	 * @throws Exception
	 */
	public ActionForward execute(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response);
		throws Exception {

		System.out.println("ShowPageInfoAction .......");;

		//tag 里用到,必须
		PageInfo pInfo = new PageInfo();;
		pInfo.setPageSize(10);; //recordsNumber/Page
		pInfo.setRecordTotal(101);; //到service里拿
		setPageInfo(request, pInfo);;

		//查询,取到记录
		//List list=service.find(pInfo.getStartRecord();,pInfo.getEndRecord(););;
		//or
		//List list=service.find(pInfo);;
		//request.setAttribute("fileList",list);;

		return mapping.findForward("success");;
	}

	private void setPageInfo(HttpServletRequest request, PageInfo pInfo); {
				
		String pageIndex = request.getParameter("pageIndex");;//从页面取到的当前页				
		if (pageIndex == null || pageIndex.equals("");); {
			pInfo.setCurrentPage(1);;
		} else {
			pInfo.setCurrentPage(Integer.parseInt(pageIndex););;
		}
		String pageNo = request.getParameter("pageNo");;//跳转的目的页index				
		if (pageNo != null && !pageNo.equals("");); {
			pInfo.setCurrentPage(Integer.parseInt(pageNo););;
		}		
		request.setAttribute("pageName", pInfo);;//tag需要的PageInfo信息
	}
}
分享到:
评论

相关推荐

    基于QT中的QTableView实现表格翻页标签(精准定位、表格可拖动大小、可与滑动条联动)

    本文将深入探讨如何在QTableView中实现表格翻页标签,同时确保表格可以精确定位,支持拖动调整大小,并能与滑动条联动。 首先,我们需要了解QTableView的基本使用。QTableView是一个视图类,它继承自...

    E新时代企业网站管理系统

    1、增加短信息互发功能,用户与用户互发...7、增加新闻上一页翻页标签,新闻下一页翻页标签 8、增加产品上一页翻页标签,产品下一页翻页标签 9、增加新闻内容标签解释,扩展内容标签解析 10、增加前台在线订购商品功能

    j2ee翻页自定义标签+sturts

    在这个例子中,“j2ee翻页自定义标签+sturts”着重展示了如何在J2EE环境中实现分页功能,同时对比了使用自定义标签和Struts框架内置标签的方法。 首先,让我们深入了解分页功能。在大数据量的展示场景中,分页是必...

    织梦网站的一些常用的标签

    - **翻页标签**:`{dede:pagebreak}`, 在长篇文章中插入分页符。 ### 9. 功能按钮标签 - **收藏、推荐、反馈与打印按钮**:通过 `{dede:fieldname='phpurl'}` 结合不同的PHP脚本,可以实现收藏、推荐、反馈等功能...

    extjs实现的带标签、翻页动画的书

    在本项目中,“extjs实现的带标签、翻页动画的书”显然利用了ExtJS的组件化特性和动画功能,创建了一个模拟真实书籍阅读体验的应用。 首先,我们来看看“标签”这一概念。在Web应用中,标签(Tab)通常用来组织和...

    翻页功能java控件

    在这个翻页控件中,`pager.tld`定义了一个名为`pager`的标签,用于在页面上渲染翻页组件。开发者可以在JSP页面中通过`&lt;pager:tagname&gt;`的形式调用这个标签,从而快速插入翻页组件。 接着,`Faces-config.txt`文件...

    html_html图片翻页_html实现翻页_html_

    在HTML中,我们通常使用`&lt;img&gt;`标签来插入图片。它的基本语法如下: ```html 替代文本" width="宽度" height="高度"&gt; ``` `src`属性指定了图片的路径,`alt`提供了图片无法显示时的替代文本,而`width`和`height`...

    按字数翻页.rar

    通过标签“字数翻页”、“字符翻页”和“按字数翻页”,我们可以推断出这个压缩包主要是针对按字数划分页面内容的JavaScript实现。而“翻页”标签则暗示了这是一个关于分页的技术,只是这里的分页标准是基于字符或...

    移动端html5页面翻页

    这种技术在微信H5页面中尤其常见,因为它们可以提供类似图书翻页的动态体验,使得内容展示更加生动有趣,增强用户的浏览兴趣。接下来,我们将深入探讨这个话题,包括HTML5在移动端的优势、实现翻页效果的关键技术和...

    spring boot框架layui前端,table拓展,支持动态表头和数据展示,支持table表数据编辑

    在这个项目中,翻页标签可以隐藏,意味着在特定情况下,如数据较少时,可以选择不显示分页,提高界面简洁性。 3. **查询请求优化**:描述中提到“修改查询请求2次后台”,这可能是为了减少不必要的网络请求和提高...

    JS相片翻页特效+翻页效果

    【标签】"JS"指示了这个项目的核心技术是JavaScript,这是一种广泛应用于Web开发的脚本语言,负责在客户端执行,提供动态交互和实时更新的功能。在这里,JavaScript被用来实现图片翻页的交互逻辑和动画效果。 ...

    book翻页实现Demo

    标签“翻页android”进一步明确了这个项目是关于Android平台上的翻页动画技术。在Android开发中,实现这样的效果可能需要用到自定义View或者动画库,比如使用Canvas进行绘图,或者利用Android提供的Animation API。 ...

    Jquery翻页 超炫 特效

    结合给出的标签"Jquery 图片 翻页 超炫 特效",我们可以进一步优化这个基本方案,比如加入更多的动画效果,如3D翻转、淡入淡出组合、滑动切换等,以增强视觉冲击力。还可以利用CSS3的过渡和动画属性,与jQuery结合,...

    js 一组图片翻页并自动翻页

    我们需要找到页面中存放图片的元素,如`&lt;img&gt;`标签,然后通过JavaScript去修改其`src`属性,实现图片的切换。可以使用`document.getElementById`、`querySelector`或`querySelectorAll`等方法获取元素,再通过`.src`...

    jeecms v3.0.1 开源jsp网站管理系统.rar

    21、增加栏目翻页标签 22、修正文章删除后TAG相关文章数量统计问题; 23、修正敏感词控制无效的问题 24、修正发布多媒体视频文件无效的问题; 25、新增管理员管理的细微权限验证,低级别管理员不能管理高级别管理员...

    Jquery 实现时钟翻页效果

    创建一个包含小时、分钟和秒的结构,每个部分可以由多个数字组成,比如 `&lt;span&gt;` 标签表示单个数字: ```html &lt;div class="clock-part hours"&gt;&lt;/div&gt; &lt;div class="clock-part minutes"&gt;&lt;/div&gt; ...

    24款css翻页代码

    在标签中,“css”表示这个资源与CSS技术紧密相关,“翻页”则强调了这些代码是用于实现页面翻转效果的。这些标签有助于人们快速识别和搜索到相关的学习材料或解决方案。 根据压缩包的文件名“24款纯css翻页代码”...

    html5 css3带翻页数字时钟动画特效

    考虑到标签中提到了“翻页”,开发者可能会使用CSS3的`clip-path`或`mask`属性来创建数字切割效果,模拟纸片翻转。这两个属性可以定义元素的可视区域,通过动态改变这些区域的形状,可以实现数字翻转的动画效果。 ...

    delphi做的图片翻页特效

    标签中的“图片”表明这是与图像处理相关的技术,“delphi”是实现这一功能的编程工具,“反页特效”则指出了这个项目的特色在于其动态的视觉效果。 在压缩包的文件列表中: - Project1.cfg:这是Delphi项目的配置...

    Android 实现书籍翻页效果TXT阅读器

    在Android平台上开发一款书籍翻页效果的TXT阅读器是一项具有挑战性的任务,它涉及到许多关键技术点,包括文本处理、UI设计、动画效果以及性能优化。本文将深入探讨如何实现这样的应用,主要关注以下几个方面: 1. *...

Global site tag (gtag.js) - Google Analytics