目录

展现报表的基本办法

用户可以通过传入报表资源ID(ResID)或报表文件名称的方式展现指定的报表。

展现页面中会自动判断出报表是填报表还是普通报表,如果是填报表,则会显示出填报表特有的工具栏按钮,例如数据提交按钮。


 

传递resID展现报表

有些用户会希望可以这样简单地调用报表:
    showReport.jsp?resId=xxxx&param1=xxxx

但这种方法存在以下问题:

因此,需要基于以下的通过JS的调用方式,并对调用参数进行安全保护。
   

对报表资源ID进行保护的安全调用方式代码:

   // 引入模块调用入口的js文件
   <script type="text/javascript" src="/reportmis/mis2/security/js/ModuleEntry.js"></script>
   <script type="text/javascript">
      function srByresID(){
            //这里引用后台计算出来的安全校验信息值
            // 要传递的参数,resID:报表的资源ID。
            var params="{resID:'10052'}";
          <%
            Map paramMap = new HashMap ();
            //将报表资源ID加入安全校验信息
            paramMap.put("resID","10052");
            // 生成安全校验信息
            String secInfo = Security.generate(request, paramMap);
          %>
            // 调用产品报表展现模块
            // "SR"为展示报表的模块ID,params为要传递的参数,secInfo是安全验证信息,"_blank"表示新窗口打开。
            new ModuleEntry('SR', params, "<%=secInfo%>", '_blank','').enter();
      }
   </script>
   <a href="#" onClick="javascript: srByresID();', '', '_blank','').enter();">查看报表</a>

传递报表文件名称展现报表

示例代码:

<// 引入安全校验类
   <%@ page import="com.runqianapp.security.entry.sec.Security"%> 
   <// 引入Base64加密类
   <%@ page import="com.runqianapp.common.base64.Base64"%>
   // 引入模块调用入口的js文件
   <script type="text/javascript" src="/reportmis/mis2/security/js/ModuleEntry.js"></script>
   // 引入Base64加密的js文件
   <script type="text/javascript" src="/reportmis/mis2/gezComponents/jsUtils/Base64.js"></script>
   <script type="text/javascript">
      function srByraq(){
            // 要传递的参数,fileNameWithPathB64:报表文件路径需要经过Base64加密。
            var params="{fileNameWithPathB64,'"+new Base64().encode('flexdesigner/reportFiles/10052.raq')+"'}";
          <%
            Map paramMap = new HashMap ();
            //将报表资源ID加入安全校验信息
            paramMap.put("fileNameWithPathB64",Base64.encode("flexdesigner/reportFiles/10052.raq"));
            // 生成安全校验信息
            String secInfo = Security.generate(request, paramMap);
          %>
            // 调用产品报表展现模块
            // "SR"为展示报表的模块ID,params为要传递的参数,secInfo是安全验证信息,"_blank"表示新窗口打开。
            new ModuleEntry('SR', params, "<%=secInfo%>", '_blank','').enter();
      }
   </script>
   <a href="#" onClick="javascript:srByraq()', '', '_blank','').enter();">查看报表</a>

在资源列表获取安全调用展现代码

1、打开资源中心列表,找到对应的资源,在其列上右键,选择右键菜单中的复制信息

2、复制调用代码后的输入框中的代码,将其放入对应的jsp中,展现时调用showReport_xxx(),xxx是报表id

   注意:上面引入的类及js文件,在调用页面存在则不需重复引入

示例jsp代码:

<!--引入类及js开始,请确认页面是否已引入对应的类及js,不必重复引入-->
<%@ page import="java.util.Map"%>
<%@ page import="java.util.TreeMap"%>
<%@ page import="com.runqianapp.security.entry.sec.Security"%>
<script type="text/javascript" src="<%=request.getContextPath()%>/mis2/security/js/ModuleEntry.js"></script>
<!--引入类及js结束-->
<script type="text/javascript">
    function showReport_32237(){
        var params = {resID : 32237};
        <%
        Map<String, String> paramMap = new TreeMap<String, String>();
        paramMap.put("resID", "32237");
        String secInfo = Security.generate(request, paramMap);
        %>
        new ModuleEntry("SR", params, "<%=secInfo%>", "_blank").enter();
    }
    //上述内容为复制的调用代码
    //展现时调用showReport_xxx()
    window.onload=function(){
       showReport_32237();
    }
 </script>