大家都知道DisplayTag标签在中小型项目中使用是的比较多的,关于它的用法和一些优点我这里就不多说了,网上有很多资料供参考。这里就说下他的分页问题。DisplayTag标签的分页是通过 requestURI 属性实现的,代码如下:
<display:table id="idListRType" name="pageViewRtype"
class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action" >
<display:column property="RType" title="房间类型"></display:column>
<display:column property="price" title="预设单价"></display:column>
<display:column property="clPrice" title="钟点价格/小时"></display:column>
<display:column property="bed" title="床位数"></display:column>
<display:column property="clRoom" title="是否按钟点计费(Y/N)"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
这种方法只要其后台服务处理恰当在jsp页面可轻松实现“上一页”“下一页”等功能。
可是如果页面上有两个(或者更多)表格需要分页怎么办?是的,最初我也想的是,这不是依葫芦画瓢吗?照着上面的写不就得了,于是实现代码如下:
<display:table id="idListRType" name="pageViewRtype"
class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action" >
<display:column property="RType" title="房间类型"></display:column>
<display:column property="price" title="预设单价"></display:column>
<display:column property="clPrice" title="钟点价格/小时"></display:column>
<display:column property="bed" title="床位数"></display:column>
<display:column property="clRoom" title="是否按钟点计费(Y/N)"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
<display:table id="idListRoominfo" name="pageViewRinfo"
class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action">
<display:column property="id" title="房间号"></display:column>
<display:column property="roomtype.RType" title="房间类型"></display:column>
<display:column property="state" title="房间状态"></display:column>
<display:column property="location" title="所在区域"></display:column>
<display:column property="RTel" title="房间电话"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
呵呵,看起来妥妥的。可是当点击两个表格其中一个的上一页,下一页链接时发现,另一个表格也跟着动了:它回到了首页,我们的一般设计应该是,当操作其中的一个表格时,另一个表格应该保持原来的状态,该是第几页的就是第几页,不应该随着其他的分页而变化。那么,为什么会出现上述这种情况呢?稍微思考下我们马上发现问题所在了,那是因为在操作其中一个表格时另一个表格的当前页码并没有被传送至后台。知道问题了,那么我们的改进代码如下:
<display:table id="idListRType" name="pageViewRtype"
class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}" >
<display:column property="RType" title="房间类型"></display:column>
<display:column property="price" title="预设单价"></display:column>
<display:column property="clPrice" title="钟点价格/小时"></display:column>
<display:column property="bed" title="床位数"></display:column>
<display:column property="clRoom" title="是否按钟点计费(Y/N)"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
<display:table id="idListRoominfo" name="pageViewRinfo"
class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}">
<display:column property="id" title="房间号"></display:column>
<display:column property="roomtype.RType" title="房间类型"></display:column>
<display:column property="state" title="房间状态"></display:column>
<display:column property="location" title="所在区域"></display:column>
<display:column property="RTel" title="房间电话"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
其中rtypeCurrentPage和rtypeCurrentPage两个参数在后台用request接收一下,重新查询一遍就可以了,那这样是不是就可以了呢?还是不行,多点击几次分页链接之后发现无法定位到页面了,再看浏览器地址栏发现,rtypeCurrentPage参数的个数随着你点击超链接的次数在同步增加,情况如下:
http://localhost:8080/SunHotelManager/site/rInfoClickPageTag.action?rtypeCurrentPage=1&rtypeCurrentPage=1
这样当然就有问题了,那这怎么解决呢?说也简单,加个 excludedParams="*"属性就可以了,代码:
<display:table id="idListRType" name="pageViewRtype" excludedParams="*"
class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}" >
<display:column property="RType" title="房间类型"></display:column>
<display:column property="price" title="预设单价"></display:column>
<display:column property="clPrice" title="钟点价格/小时"></display:column>
<display:column property="bed" title="床位数"></display:column>
<display:column property="clRoom" title="是否按钟点计费(Y/N)"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
<display:table id="idListRoominfo" name="pageViewRinfo" excludedParams="*"
class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}">
<display:column property="id" title="房间号"></display:column>
<display:column property="roomtype.RType" title="房间类型"></display:column>
<display:column property="state" title="房间状态"></display:column>
<display:column property="location" title="所在区域"></display:column>
<display:column property="RTel" title="房间电话"></display:column>
<display:column title="操作"><a rel="#">修改</a> <a rel="#">删除</a> </display:column>
</display:table>
这样就可以实现两个表格分页互不干扰了。
可能有大侠说,这里对每个表格用异步不就可以吗?是的一开始我也觉得是,可是,DisplayTag标签压根没提供这种实现啊,至少我没找到。
<完>
分享到:
相关推荐
在配置方面,DisplayTag 使用了两个标签库:displaytag-1.1.tld 和 fmt.tld。displaytag-1.1.tld 是 DisplayTag 自身的标签,而 fmt.tld 标签库主要用于支持中文显示。如果你的项目使用的是 Servlet 2.4 之前的版本...
Struts2和DisplayTag是Java Web开发中两个重要的框架,它们在构建动态、交互式的Web应用时发挥着关键作用。DisplayTag是一个功能强大的开源库,主要用于生成表格和提供分页功能,而Struts2则是一个MVC框架,用于处理...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和动态内容。...通过理解这两个技术的工作原理和它们之间的交互,开发者能够更好地构建用户友好、功能完善的Web应用程序。
Struts2和DisplayTag是Java Web开发中两个重要的开源框架,它们在构建动态网页和数据展示方面发挥着关键作用。Struts2是一个基于MVC(Model-View-Controller)模式的框架,它提供了强大的控制层功能,使得开发者可以...
这个压缩包包含两个主要部分,分别是`displaytag-1.1.1-src.zip`和`displaytag-1.2-bin`,分别对应DisplayTag的1.1.1版本源代码和1.2版本的二进制包。 1. **DisplayTag 1.1.1 源码** `displaytag-1.1.1-src.zip`是...
我们将主要围绕以下两个核心概念进行讨论:源码理解和工具的使用。 首先,我们需要理解分页的基本原理。在Web应用中,当数据量过大时,一次性加载所有数据可能会导致页面响应慢,用户体验下降。分页技术通过将数据...
只需将List对象赋值给request,然后在页面上使用`<display:table name="test" />`标签,DisplayTag会自动遍历List中的每个对象,将对象的所有公共属性展示在表格中。这种方法在开发初期用于快速查看对象数据是十分...
描述中提到的"displaytag-1.2-src.zip"和"displaytag-1.2-bin.zip"是DisplayTag库的两个不同版本。".src.zip"文件通常包含了源代码,开发者可以查看和修改源码,理解其工作原理,或者根据需要进行定制。".bin.zip...
为了实现中文提示,你需要在项目中引入displaytag-1.1.jar和displaytag-export-poi-1.1.jar这两个库,并且在项目的资源文件夹下放置一个displaytag.properties文件。在这个文件中,你可以定义中文的错误信息、提示...
在"www.pudn.com.txt"和"displaytag-1.1"这两个文件中,可能包含了DisplayTag 1.1的源代码和相关文档。通过对源码的阅读,开发者可以深入理解DisplayTag的工作机制,从而更好地利用它进行Web开发,解决实际问题,...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别是用来管理应用程序上下文和服务层(业务逻辑)以及持久化数据到数据库的关键工具。在这个"Spring-Hibernate的通过标签分页源码"中,我们可以...
DisplayTag和Pager-Taglib是两个Java Web开发中的开源分页库,它们都提供了强大的表格和分页功能。DisplayTag是一个功能丰富的表格标签库,不仅可以用于数据的分页显示,还支持排序、过滤、国际化等功能。它的使用...
在不使用`<display:column>`标签的情况下,只需将List对象传递给`<display:table>`标签,DisplayTag会自动遍历List中的每个对象并显示其所有属性,这对于快速查看对象数据非常有用。例如: ```jsp ("test", new ...
DisplayTag-1.1.jar是这个库的主要组件,包含了处理表格展示的各种功能,如排序、分页、格式化数据以及导出等功能。这个版本的DisplayTag为项目提供了稳定性和兼容性,使得在Web应用中处理复杂表格变得更加简单。 ...
DisplayTag是一个强大的JSP标签库,提供了一套用于表格显示和分页的标签。以下是一个简单的使用示例: ```jsp <display:table name="users" pagesize="10"> <!-- columns --> </display:table> ``` 在Action...
DisplayTag 是一个强大的开源Java标签库,专门设计用于在Web应用程序中轻松地创建复杂的表格展示。这个库非常适合基于MVC架构的应用,它极大地简化了HTML表格的生成和管理,提供了丰富的功能,包括排序、分页、导出...