• 润乾报表分页遇到的问题


    环境:java+tomcat+struts2+spring+hibernate

    逻辑:点击查询的时候,会访问后台的一个方法getRunqianPara,返回润乾文件名和参数params,跳转到data-statistic-launch-runqian.jsp

    问题:在页面data-statistic-launch-runqian.jsp中能正常显示润乾报表,但是点击"下一页"的图标按钮的时候报错,报错页面如下:

    我的data-statistic-launch-runqian.jsp页面代码如下:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ taglib uri="http://www.cnblogs.com/runqian/runqianReport4.tld" prefix="runqian" %>
     4 
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6     <%  
     7         String appmap = request.getContextPath();
     8         String firstPageImage = "<img src='"
     9                 + appmap
    10                 + "/style1/images/firstpage.gif' border=no style='vertical-align:middle'>";
    11         String lastPageImage = "<img src='"
    12                 + appmap
    13                 + "/style1/images/lastpage.gif' border=no style='vertical-align:middle'>";
    14         String nextPageImage = "<img src='"
    15                 + appmap
    16                 + "/style1/images/nextpage.gif' border=no style='vertical-align:middle'>";
    17         String prevPageImage = "<img src='"
    18                 + appmap
    19                 + "/style1/images/prevpage.gif' border=no style='vertical-align:middle'>";
    20         String printImage = "<img src='"
    21                 + appmap
    22                 + "/style1/images/rq_print.gif' border=no style='vertical-align:middle'>";
    23         String excelImage = "<img src='"
    24                 + appmap
    25                 + "/style1/images/excel.gif' border=no style='vertical-align:middle'>";
    26         String pdfImage = "<img src='" + appmap
    27                 + "/style1/images/pdf.gif' border=no style='vertical-align:middle'>";
    28     %>
    29 <runqian:html name="report" reportFileName="${modelName}"
    30                         funcBarLocation="bottom" params="${params}" needPrint="yes"
    31                         needScroll="no"
    32                         needOfflineInput="yes" needSaveAsExcel="yes"
    33                         needImportExcel="yes" needSaveAsPdf="yes" generateParamForm="no"
    34                         exceptionPage="/index/reportError.ftl" needPageMark="yes"
    35                         pageMarkLabel="页号{currpage}/{totalPage}" displayNoLinkPageMark="yes" width="-1"
    36                         firstPageLabel="<%=firstPageImage%>" 
    37                         prevPageLabel="<%=prevPageImage%>" 
    38                         nextPageLabel="<%=nextPageImage%>" 
    39                         lastPageLabel="<%=lastPageImage%>" 
    40                         printLabel="<%=printImage%>" 
    41                         excelLabel="<%=excelImage%>" 
    42                         pdfLabel="<%=pdfImage%>"/>

    在网上找了一大圈,找到博主“薄荷红茶”的这个文章http://starbhhc.iteye.com/blog/1544122,文章中前两步,我都是这样做的,第三步没看懂。

    后来这样分析:

    在data-statistic-launch-runqian.jsp页面中,将鼠标放在下一页的图标上,IE的左下角会出现链接地址

    这时发现和会访问后台的链接是一样的

    通过IE的debug看,找到脚本,选择对应的页面

    会看到这样的代码:

    1 <script language=javascript>
    2     function report_toPage( pageNo ) {
    3     if( pageNo < 1 || pageNo > report_getTotalPage() ) return;
    4         document.report_turnPageForm.report_currPage.value = pageNo;
    5         document.report_turnPageForm.submit();
    6     }
    7 </script>

    还有这个:

    1 <form name="report_turnPageForm" method=post action="http://localhost:8080/omms-web/WEB-INF/content/transmission/data-statistic-launch-runqian.jsp?t_i_m_e=1347517433155" style="display:none">

    这时候想到了博主“薄荷红茶”的文章中说的内容的第三点了。

    其实点击“下一页”按钮图标的时候,默认是对form的递交,而form的action默认是data-statistic-launch-runqian.jsp页面(也就是自身页面)

    如果你的params参数是在jsp页面中拼接的,则不用修改action地址,如果是后台传过来的,那么你需要修改action

    解决方法:

    用js修改form的action为访问后台的地址,例如我这里是在data-statistic-launch-runqian.jsp页面最后一行添加以下代码:

    <script type="text/javascript">
        document.report_turnPageForm.action="<%=request.getContextPath()%>/transmission/data-statistic-launch!getRunqianPara.action";
    </script>

    其实这一步就是博主“薄荷红茶”的文章中说的内容的第三点

    注意:

    ①如果你使用的是iframe,有时会因为缓存的原因没看出页面发生变化,最好采取清除缓存措施

    ②润乾报表的raq文件是否有中文在这里没有关系

  • 相关阅读:
    【Alpha】Scrum Meeting 10
    【Alpha】Scrum Meeting 9
    【Alpha】Scrum Meeting 8
    【Alpha】Scrum Meeting 7
    团队项目拆解
    【Alpha】Scrum Meeting 6
    【Alpha】Scrum Meeting 5
    servlet转发与重定向区别
    servlet中request和response
    Java Web之Servlet中response、request乱码问题解决
  • 原文地址:https://www.cnblogs.com/javac/p/2683626.html
Copyright © 2020-2023  润新知