现在的位置: 首页 > 综合 > 正文

JspPagerTag用在Struts上需要修改代码[ 原创 ]

2013年06月26日 ⁄ 综合 ⁄ 共 2354字 ⁄ 字号 评论关闭

page-taglib.jar是为jsp-servlet程序写的,没有考虑到struts.       所以当Action类型为DispatchAction时会有错误。  因此需要修改一下他的源代码,(可以下载page-src.jar.  )

在翻页的页面上需要include一个jsp,这个jsp里包含了翻页的功能,以此进行翻页。如下:

<pg:index export="totalItems=itemCount">
<pg:page export="firstItem, lastItem">
<div class="resultInfo">
Displaying results <strong><%= firstItem %>-<%= lastItem %></strong> of <strong><%= totalItems %></strong> found
</div>
</pg:page>

<div class="rnav">
<span class="rnavLabel">Results:</span>&nbsp;
<pg:prev export="pageUrl">
<a href="<%= pageUrl %>" class="rnavLink">&#171;&nbsp;Prev</a>&nbsp;
</pg:prev>
<pg:pages export="pageUrl,pageNumber,firstItem,lastItem">
    <% if (pageNumber == currentPageNumber) { %>
&nbsp;<span class="rnavCurr"><%= firstItem %>-<%= lastItem %></span>
    <% } else { %>
&nbsp;<a href="<%= pageUrl %>" class="rnavLink"><%= firstItem %>-<%= lastItem %></a>
    <% } %>
</pg:pages>
<pg:next export="pageUrl">
&nbsp;&nbsp;<a href="<%= pageUrl %>" class="rnavLink">Next&nbsp;&#187;</a>
</pg:next>
</div>
</pg:index>

可见,<pg:pages export="pageUrl,pageNumber,firstItem,lastItem">这句话,就是从pg:pages所表示的tag里
获得变量pageUrl并根据它来进行跳转,这个pageUrl就是查询符合提交记录。。因为我使用struts 的DispatchAction,因此这个pageUrl的样子如下:
  /PointListAction.do?method=displayList&uid=gg&ad_id=90 ,
PagerTag中的一处需要修改:

原:

final String getOffsetUrl(int pageOffset) {
  int uriLen = uri.length();
  //log.info("the varname=uri ,value=" + uri);
  
   uri.append(params == 0 ? '?' : '&'); // 这里对DispatchAction的path不适用。
  
  uri.append(idOffsetParam).append('=').append(pageOffset);
  String offsetUrl = uri.toString();
  uri.setLength(uriLen);
  return offsetUrl;
 }

final void addParam(String name, String value) {
  if (value != null) {
   name = java.net.URLEncoder.encode(name);
   value = java.net.URLEncoder.encode(value);

    uri.append(params == 0 ? '?' : '&');

  。。。   

  }
  

修改成:

final String getOffsetUrl(int pageOffset) {
  int uriLen = uri.length();
  //log.info("the varname=uri ,value=" + uri);
  
  if( uri.indexOf("?") == -1){
   uri.append(params == 0 ? '?' : '&');
    
  }else{
   uri.append("&");
  }
  
  uri.append(idOffsetParam).append('=').append(pageOffset);
  String offsetUrl = uri.toString();
  uri.setLength(uriLen);
  return offsetUrl;
 }

 final void addParam(String name, String value) {
  if (value != null) {
   name = java.net.URLEncoder.encode(name);
   value = java.net.URLEncoder.encode(value);

   if(uri.indexOf("?")==-1)
    uri.append(params == 0 ? '?' : '&');
   else
    uri.append('&');
    ...

  }

这样,就可以使用DispatchAction正常地使用JspPagerTag了,修改了源码,可以打一个新的包,放到
工程里。至于如何使用JspPagerTag翻页,我还写了一个小例子。明天再说吧。

   

抱歉!评论已关闭.