报表页面工具条权限控制

需求描述

设计器自带“demo”应用,报表在 Web 页面呈现以后,都会自动带出工具条,且所有功能按钮都可使用。

imagepng

但实际业务场景中,有各种各样的需求,要求更加的灵活。比如有些用户访问时,仅让其查看呈现的结果,不给其提供工具条导出和打印报表;或者是某些报表仅能查看结果,而不提供导出打印; 亦或是根据用户或报表来动态提供可用的按钮功能,如 A 仅能导出 Word 且不能打印,B 可以打印但不能导出等。

注:以下示例均采用设计器自带 demo,reportJsp 目录下的 showReport.jsp 文件(preview.jsp 及填报表 JSP 文件同理)为例。

解决方法

情况一:整体控制工具条

首先要知道工具条怎么出来的,编辑 showReport.jsp,可找到这么一行

imagepng

这个就是给报表引入的工具条,是在另外的 JSP 页面定义的。知道了怎么出来的,就好控制了。

1、 所有报表不要工具条

这个最简单,把上面那行引入的代码注释掉或删掉就可以了。

注释方法:

<!--<jsp:include page="toolbar.jsp" flush="false" />-->

2、 根据用户判断是否引入工具条

方法:根据系统的用户信息判断是否引入上面这行代码。

这里我们模拟从外部接收来的用户名,用以判断是否显示工具条。

获取用户信息:

String userID = request.getParameter(“username”);

控制工具条(如果是 zhangsan 和 lisi,显示工具条,否则不显示):

<% if("zhangsan".equals(userID) || "lisi".equals(userID)){%>

<jsp:include page="toolbar.jsp" flush="false" />

<%}%>

imagepng

修改成以上形式即可实现根据用户判断动态加载。

3、 根据报表名称判断是否引入工具条

和 2 相似,这里只不过通过要访问的报表名判断就可以了。

JSP 内已经接收了报表名字

imagepng

所以,我们根据“report”这个变量判断就可以了。

imagepng

即,当访问的报表为 a.rpx 和 d.rpx 的时候显示工具条,其他的不显示。

情况二:控制工具条中的部分按钮可用

从上面可以看出,工具条是在另外的 toolbar.jsp 内定义的,所以只是控制部分按钮可用的话,需要在 toolbar.jsp 内做修改。

编辑 toolbar.jsp

imagepng

每个功能按钮都是调用的一个 JS 函数,从名字就可以基本知道对应哪个按钮了。

另外,每一个按钮都放在了一个

  • 标签内。

    imagepng

    所以,我们控制是否显示或引入某个或某些

  • 就可以了。

    1、 根据用户判断是否显示功能按钮

    如,“zhangsan”和“lisi”可以使用所有功能按钮,其他人只能用打印。

    同样模拟从外部接收来的用户名条。

    获取用户信息:

    String userID = request.getParameter(“username”);
    

    控制功能按钮:

    imagepng

    给导出功能按钮增加判断。

    2、 根据报表名称判断是否显示功能按钮

    与“用户判断”同理

    toolbar.jsp 内获取报表名字

     String report = request.getParameter( "rpx" );
    

    控制权限:

    imagepng

    当报表名为“a.rpx”时,

    imagepng

    访问“c.rpx”时

    imagepng

    导出按钮均不显示。

  •