You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取JasperServer中不同用户使用的报表名称

获取Jasper Server Enterprise 7.0中当前登录用户的报表名称

针对你遇到的问题,我整理了几个在Jasper Server 7.0里获取当前登录用户正在使用的报表名称的可行方案,你可以根据自己的使用场景选择:

1. 在报表内部直接使用内置参数

Jasper Server提供了几个内置参数,可以直接在报表设计中获取报表相关信息:

  • $P{REPORT_UNIT_URI}:返回报表单元的完整URI(比如/public/Department/Sales_Report),你可以通过字符串函数提取报表名称,示例表达式:
    SUBSTRING_AFTER($P{REPORT_UNIT_URI}, "/")
    
    如果报表在多级目录下,想要准确获取最后一级的报表名称,可以嵌套使用SUBSTRING_AFTER或者用正则表达式:
    REGEX_REPLACE($P{REPORT_UNIT_URI}, ".*/(.*)", "$1")
    
  • $P{JASPER_REPORT}.getName():通过JasperReport对象直接获取报表的名称,这个方法返回的是报表设计文件的名称(不带.jrxml后缀),示例表达式:
    $P{JASPER_REPORT}.getName()
    
    注意:这个参数在报表运行时才会生效,设计时可能无法预览值。

2. 通过REST API查询当前用户的报表执行实例

如果是在外部应用或者后台逻辑中需要获取用户正在使用的报表,可以调用Jasper Server的REST API:

  • 使用/rest_v2/reportExecutions接口,该接口会返回当前用户所有活跃的报表执行实例,其中包含报表单元的URI和名称。示例curl命令(替换成你的服务器地址和用户凭证):
    curl -u your_username:your_password http://jasper-server-host:8080/jasperserver/rest_v2/reportExecutions
    
    返回的JSON响应中,reportUnitUri字段就是报表的完整路径,你可以从中解析出报表名称;部分版本中还会直接返回reportUnitName字段。

3. 自定义事件监听器实现实时监控

如果需要长期监控用户的报表访问行为,可以通过自定义Spring事件监听器来实现:

  1. 编写一个实现ApplicationListener<ReportExecutionEvent>的Java类,在onApplicationEvent方法中获取报表和用户信息:
    import com.jaspersoft.jasperserver.api.engine.common.service.impl.ReportExecutionEvent;
    import org.springframework.context.ApplicationListener;
    
    public class ReportAccessListener implements ApplicationListener<ReportExecutionEvent> {
        @Override
        public void onApplicationEvent(ReportExecutionEvent event) {
            String username = event.getUsername();
            String reportName = event.getReportUnit().getName();
            // 这里可以将username和reportName存储到数据库或日志中
            System.out.println("User " + username + " accessed report: " + reportName);
        }
    }
    
  2. 将这个类注册到Jasper Server的Spring上下文(比如修改applicationContext.xml),添加bean定义:
    <bean id="reportAccessListener" class="com.yourpackage.ReportAccessListener"/>
    
    这样每当用户执行报表时,监听器就会触发,记录下用户和对应的报表名称。

内容的提问来源于stack exchange,提问作者MegJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:34