`

Struts 循环分页

阅读更多
    <div class="page" align="right"><s:property value="nav.currentPage"/>/<s:property value="nav.allPages"/>
        <s:if test="nav.allRows > nav.pageSize">

            <% // 当前页数 %>
            <s:set name="startPage" value="nav.currentPage" ></s:set>
            <% // 总共有多少页 %>
            <s:set name="allPages" value="nav.allPages" ></s:set>
            <% // 计算 能分解成多少10页 %>
            <s:set name="p" value="0" ></s:set>
            <s:if test="(#startPage-1)%10 == 0">
                <s:set name="p" value="(#startPage-1)/10" ></s:set>
            </s:if>
            <s:else>
                <s:set name="p" value="(((#startPage-1)-(#startPage-1)%10)/10)"  ></s:set>
            </s:else>
            <% // 当前第一页 就不能前一页 %>
            <s:if test="#startPage == 1">
                <font class="first selected" face=webdings color="'+alertcolor+'">9</font>
            </s:if>
            <% // 当前页不是第一页,就可以出首页 %>
            <s:else>
                <a class="navigation" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property  value='1'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>">
                <font class="first " face=webdings>9</font>  </a>
            </s:else>
            <% // 当前页前面如果有10页就出现前十页 %>
            <s:if test="#p*10 >0">
                <s:if test="nav.currentPage-10<=0">
                    <a  class="navigation" title="前十页" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property  value='1'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>">
                    <font class="first" face=webdings>9</font>  </a></s:if>
                <s:else>
                    <a  class="navigation" title="前十页" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property  value='1'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>">
                    <font class="prefix" face=webdings>7</font>  </a>
            </s:else></s:if>
            <b>
                <% //显示以10页为单位,不足10页时,显示剩余页面 %>
                <s:set name="forNum" value="0" ></s:set>
                <%//变量,判断是否有后十页,有就赋值1 %>
                <s:set name="isTenNum" value="0" ></s:set>
                <% //如果所有页是10以内,返回当前的数字页,如果所有页除以10等于p(当前页取余10) 不存在p大于所有页除以10 %>
                <s:if test="#allPages/10==0  || (#allPages/10) == (#p) ">
                    <s:set name="forNum" value="#allPages" ></s:set>
                </s:if>
                <s:else>
                    <s:set name="isTenNum" value="1" ></s:set>
                    <%// 存在后十页,值为当前页乘10%>
                    <s:set name="forNum" value="10*(#p+1)" ></s:set>
                </s:else>
                <% // 在如果有数据的情况下循环1-10的数字 %>
                <s:bean name="org.apache.struts2.util.Counter" id="counter">
                    <s:param name="first" value="#p*10+1" />
                    <s:param name="last" value="#forNum" />
                    <s:iterator>

                        <s:if test="current ==  #startPage+1" >
                            <font color="'+alertcolor+'"><s:property/></font>
                        </s:if>
                        <s:else>

                            <a class="last" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property/></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>" ><s:property></s:property></a>
                        </s:else>
                    </s:iterator>
                </s:bean>

                <s:if test="#isTenNum == 1">
                    <s:if test="nav.currentPage+10 >= nav.allPages">
                        <a  class="navigation" title="后十页" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property  value='nav.allPages'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>">
                        <font class="next" face=webdings>8</font>  </a>
                    </s:if><s:else>
                        <a  class="navigation" title="后十页" href="<s:url action="index"  portletUrlType="action"> <s:param name="currentPage"><s:property  value='nav.currentPage+10'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param> </s:url>">
                        <font class="next" face=webdings>8</font>  </a>
                    </s:else>
                </s:if>

                <s:if test="#startPage == #allPages">
                    <Font CLASS="last selected" face=webdings color="'+alertcolor+'">:</Font>
                </s:if>
                <s:else>
                    <a class="navigation" title="尾页" href="<s:url action="index" portletUrlType="action"><s:param name="currentPage"><s:property value='nav.allPages'></s:property></s:param><s:param name="onedistrict"><s:property value="onedistrict"/></s:param></s:url>"><font class="last selectd" color="'+alertcolor+'">:</font></a>

                </s:else>
            </b>
    </s:if>  </div>



<%-- 这是分页组件ajax版,即被嵌入到ajax显示的界面中,所以相应的链接均被替换为点击事件,以由上层调用方来确保相应的点击能够
按照正确的方式工作,规定相应的点击事件为clickPage(url),中间传递的参数为点击时触发的url链接.
created by flym 2010-09-20
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!-- 分页组件 -->
<s:if test="page.hasPreviousPage || page.hasNextPage">
    <div class="turnpage">
            <%-- 开头两个 --%>
        <s:url id="goto"><s:param name="page.currentPage" value="1"/></s:url>
        <s:a href="%{goto}" onclick="clickPage('' + this.href);return false;" title="首页"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></s:a>
        <s:if test="page.hasPreviousPage">
            <s:url id="goto">
                <s:param name="page.currentPage" value="%{page.currentPage - 1}"/>
            </s:url>
        </s:if>
        <s:a href="%{goto}" onclick="clickPage('' + this.href);return false;" title="上一页"><span class="ui-icon ui-icon-triangle-1-w"></span></s:a>
            <%-- 页面显示 --%>

        <s:if test="page.totalPage <= 6">
            <s:bean name="org.apache.struts2.util.Counter" id="counter">
                <s:param name="first" value="1"/>
                <s:param name="last" value="page.totalPage"/>
            </s:bean>
            <s:iterator value="#counter">
                <s:url id="goto"><s:param name="page.currentPage" value="top"/></s:url>
                <s:if test="top == page.currentPage"><a class="cur"><span><s:property/></span></a></s:if>
                <s:else><s:a href="%{goto}" onclick="clickPage('' + this.href);return false;"><span><s:property/></span></s:a></s:else>
            </s:iterator>
        </s:if>
        <s:else>
            <s:bean name="org.apache.struts2.util.Counter" id="counter">
                <s:param name="first"
                         value="%{page.currentPage % 6 == 0 ? page.currentPage - 5 : page.currentPage / 6 * 6 + 1}"/>
                <s:param name="last"
                         value="%{page.currentPage % 6 == 0 ? page.currentPage : (page.currentPage / 6 * 6 + 6) < page.totalPage ? (page.currentPage / 6 * 6 + 6) : page.totalPage}"/>
            </s:bean>
            <s:iterator value="#counter">
                <s:url id="goto"><s:param name="page.currentPage" value="top"/></s:url>
                <s:if test="top == page.currentPage"><a class="cur"><span><s:property/></span></a></s:if>
                <s:else><s:a href="%{goto}" onclick="clickPage('' + this.href);return false;"><span><s:property/></span></s:a></s:else>
            </s:iterator>
        </s:else>
            <%-- 结尾两个 --%>
        <s:url id="goto"><s:param name="page.currentPage" value="page.totalPage"/></s:url>
        <s:if test="page.hasNextPage">
            <s:url id="goto"><s:param name="page.currentPage" value="%{page.currentPage + 1}"/></s:url>
        </s:if>
        <s:a href="%{goto}" onclick="clickPage('' + this.href);return false;" title="下一页"><span class="ui-icon ui-icon-triangle-1-e"></span></s:a>
        <s:url id="goto"><s:param name="page.currentPage" value="page.totalPage"/></s:url>
        <s:a href="%{goto}" onclick="clickPage('' + this.href);return false;" title="尾页"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></s:a>&nbsp;&nbsp;
        页次:<s:property value="page.currentPage"/>/<s:property value="page.totalPage"/>&nbsp;&nbsp;
        每页:<s:property value="page.pageSize"/>条&nbsp;&nbsp;
        共计:<s:property value="page.totalCount"/>条&nbsp;&nbsp;
        <s:if test="page.totalPage <= 100">
            <s:bean name="org.apache.struts2.util.Counter" id="counter">
                <s:param name="first" value="1"/>
                <s:param name="last" value="page.totalPage"/>
            </s:bean>
            <select onchange="clickPage('' + $(this).val());return false;" size="1">
                <s:iterator value="#counter">
                    <s:url id="goto"><s:param name="page.currentPage" value="top"/></s:url>
                    <s:if test="top == page.currentPage">
                        <option value="<s:property value="%{goto}"/>" selected="selected">第<s:property/>页</option>
                    </s:if>
                    <s:else>
                        <option value="<s:property value="%{goto}"/>">第<s:property/>页</option>
                    </s:else>
                </s:iterator>
            </select>
        </s:if>
    </div>
</s:if>
分享到:
评论

相关推荐

    struts2实现分页

    在分页实现中,我们主要利用 `&lt;s:bean&gt;` 创建 `org.apache.struts2.util.Counter` 类型的 bean 来控制循环范围。 #### 三、`&lt;s:bean&gt;` 标签的基本用法 `&lt;s:bean&gt;` 标签的基本语法如下: ```xml ... ``` - *...

    一个Struts实现分页,增删改查,Tiles,国际化的DEMO

    这个DEMO项目展示了如何使用Struts来实现常见的Web应用功能,包括分页、增删改查操作、Tiles布局以及国际化支持。下面我们将深入探讨这些知识点。 1. **Struts框架** Struts是Java Web开发中的重要框架,它通过...

    struts经典分页

    Struts经典分页是Java Web开发中的一种常见技术,它主要用于在用户界面展示大量数据时,提高用户体验,避免一次性加载所有数据导致页面响应慢或内存压力过大。在本篇文章中,我们将深入探讨Struts框架如何实现分页...

    struts和jsf分页

    Struts和JSF是两种广泛使用的Java Web框架,它们各自有着独特的特性和优点,而“分页”则是Web开发中的一个重要概念,特别是在处理大量数据时,分页能提高用户体验并优化性能。以下将详细介绍这两个框架如何实现分页...

    JSP JDBC WEB STRUTS 分页综合实例1

    **JSP、JDBC、Web和Struts:构建分页综合实例** 在Web开发中,JSP(JavaServer Pages)、JDBC(Java Database Connectivity)和Struts是常用的三大技术,它们各自扮演着不同的角色,共同构成了强大的Web应用程序...

    基于struts功能比较全的分页

    同时,对分页链接的生成也应防止无限循环或越界访问,比如限制最大页数的显示和访问。 综上所述,这个基于Struts的分页实现涵盖了Java Web开发的关键技术,包括Struts框架的使用、数据库操作、JSP页面设计以及...

    struts+hibernate分页技术源码下载

    JSP页面可以通过EL(Expression Language)和JSTL标签库,如`c:forEach`循环遍历分页数据。 5. **分页导航**:在用户界面,通常会有分页导航条,显示页码并允许用户跳转到不同页。这需要在JSP中计算总页数,并根据...

    struts2数字版海量分页

    "Struts2数字版海量分页"是指在Struts2框架下实现的,用于处理大数据量的分页技术。 首先,我们要理解什么是分页。分页是一种将大量数据分成小块(页)进行显示的技术,用户可以逐页浏览,而不是一次性加载所有数据...

    struts分页2

    4. **使用`logic:iterate`标签展示数据**:在JSP页面上利用Struts的`logic:iterate`标签来循环显示查询结果。 5. **添加翻页链接**:为用户提供前后翻页的功能。 #### 四、具体实现过程 以下是对部分代码的详细...

    网页分页源代码

    为了简化页面逻辑,常常会使用Java Standard Tag Library (JSTL) 的fmt和c标签库,它们提供了格式化和循环等功能,帮助我们轻松实现分页链接和数据显示。 5. **URL参数**:为了在页面间切换,我们需要在URL中携带...

    struts2示例(包含源代码)

    4. **Struts2循环和显示标签**:Struts2提供了丰富的标签库,用于在JSP页面上处理数据展示,如迭代、条件判断等。例如`&lt;s:iterator&gt;`用于遍历集合,`&lt;s:property&gt;`用于显示对象属性。 5. **SQL Server 2005分页查询...

    java分页技术汇总

    在Spring Boot中,Thymeleaf模板引擎支持`th:each`循环进行分页。配合`Spring Data JPA`,可以在控制器中返回`Page`对象,Thymeleaf自动处理显示。 8. **JPA Criteria API分页**: 对于更复杂的查询需求,JPA ...

    JAVA+servlet分页处理,JSP分页超级算法和页面

    在Struts中,我们可以在Action类中处理分页逻辑,然后将结果模型(包括当前页数据和分页信息)传递给视图。视图通常是一个JSP页面,它可以使用Struts标签库来显示数据和构建分页导航。 分页超级算法通常指的是优化...

    strust_page.rar_Action!_action分页

    Struts分页技术是Java Web开发中的一个常见需求,它能够帮助用户更有效地浏览大量数据,提高用户体验。在本示例中,"strust_page.rar_Action!_action分页" 提供了一个基于Struts框架的分页解决方案。下面将详细解释...

    基于SSH2实现的分页效果

    在前端展示方面,通常会使用JSP页面来渲染结果,结合Struts2的标签库,如`s:iterator`和`s:url`,来遍历分页数据并生成导航链接。用户可以通过这些链接进行页码跳转。 描述中提到的小瑕疵——浏览器持续处于请求...

    自己写的万能分页

    在SSH2(Struts2、Spring、Hibernate)框架中,实现分页的方法多种多样,但自定义分页方法可以更好地适应个人或团队的开发习惯。下面我们将详细探讨如何编写一个通用的分页方法。 首先,我们需要两个基础的分页方法...

    java web 分页 设计

    这里使用了Struts2的`&lt;s:iterator&gt;`标签来遍历查询结果列表`recordList`,并在循环体内显示每一条记录。 2. **页码导航**: ```html ${num} ``` 该段代码展示了页码导航的功能。`beginPageIndex`和`...

    C标签实现的分页

    1. 在JSP页面中,使用C标签的`forEach`循环遍历服务层返回的分页数据,并展示每个卡片的信息。 2. 使用C标签的条件判断语句,如`&lt;c:if&gt;`和`&lt;c:choose&gt;`,来处理页码导航。比如,当当前页为第一页时,上一页链接隐藏...

    struts文档

    2. **Logic标签**:处理条件和循环逻辑,例如`&lt;logic:equal&gt;`、`&lt;logic:iterate&gt;`等,用于根据条件展示或隐藏内容,遍历集合等。 3. **Bean标签**:用于操作JavaBean的属性,如`&lt;bean:write&gt;`用于显示Bean的属性值...

    围绕分页的练习(1)(ssh+freemarker)

    标题“围绕分页的练习(1)(ssh+freemarker)”指的是一个关于使用Spring、Struts和Hibernate(SSH)框架以及Freemarker模板引擎进行分页功能实现的编程练习。SSH是一个流行的企业级Java web应用开发框架,而Freemarker...

Global site tag (gtag.js) - Google Analytics