报表打印、导出功能的权限控制
应用场景
很多时候,我们报表的打印、导出功能必须要根据不同的操作时间或者不同的使用者来分配不同的权限。那么我们要如何实现报表打印、导出功能的权限控制呢:
这个时候我们就要使用到SR监听类。
解决方案
首先我们来了解什么是SR监听类:集深数据系统中提供了一个监听类接口showReportListener,该类需要继承com.runqianapp.showReport.listener.ShowReportListener类。在报表展现时,根据用户设置,完成对展现标签的属性值设置后,执行SR监听类来实现对标签属性值的动态修改。
监听器类中可以使用session对象、request对象、报表运行环境对象、报表计算前后报表对象,因此可以检查用户登录信息、操作权限及其他信息,并可以通过调用该监听接口可以实现对报表展现参数、标签、模式的动态设置。
实现方法
SR监听类要如何实现报表打印、导出功能的权限控制呢?
我们给出两种常见的需要分配报表打印、导出功能的权限的状况:
例如:
系统中的普通用户只能进行报表的浏览,特定有权限的用户才能进行报表的填报和输出。
SR监听类解决上述问题的示例代码
root登录时显示打印按钮,其他用户登录不显示打印按钮
import java.util.Map;
import javax.servlet.http.HttpSession;
import com.runqianapp.showReport.listener.ShowReportListener;
import com.runqianapp.view.report.ViewReport;
public abstract class ueser extends ShowReportListener{
@Override
public ViewReport execute(ViewReport vr, Map params) {
HttpSession session=(HttpSession)params.get(“session”);
String id=session.getAttribute(“sys_UserID”).toString();
if (id.equals(“root”)){
vr.setNeedPrint(“yes”);
}else{
vr.setNeedPrint(“no”);
}
return vr;
}
}
方法说明
ViewReport execute1(ViewReport vr, Map params)
参数:
ViewReport 标签对象
Map panrams 标签参数
返回:
处理后的标签对象
调用方法
· 实现SR监听类后将编译后的类文件存放至WEB-INF/classes/【包路径】下。 例如:WEB-INF/classes/com/runqianapp/showReport/listener/Test.class。
· 为SR监听类参数showReportListener指定一个JAVA实现类名。例如:showReportListener=”com.runqianapp.showReport.listener.Test”。