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

使用node-jasper向报表表格组件传值时表格为空如何解决

问题原因与解决方法

你遇到的表格为空问题是两个配置不匹配导致的,按以下步骤修改即可解决:

1. 修正数据源参数名不匹配问题

你在JRXML中为表格绑定的数据源参数是datasetTable1,但Node代码中传递数据源时用的key是Dataset1,参数名不一致导致表格无法读取到数据源。
修改Node代码中report.data的属性名:

var report = {
    report: 'hw',
    data: {
        title: "My test report",
        // 把原来的键名Dataset1改成和JRXML对应的datasetTable1
        datasetTable1: jasper.toJsonDataSource(
                    {
                        dados: [
                            {code: 'e1',name: 'raouf',function: 'Developer'},
                            {code: 'e2',name: 'djamel',function: 'Developer'},
                            {code: 'e3',name: 'omar',function: 'Medecine'}
                        ]
                    },
                    'dados' 
                ),
    },
    // 给主报表加一个空数据源,保证报表主体能渲染
    dataset: {
        dados: [{}]
    }
}

2. (可选)修改JRXML避免主数据源为空时不渲染内容

如果你不想给主报表传空数据源,可以在JRXML的根标签jasperReport上添加whenNoDataType="AllSectionsNoDetail"属性,这样即使主数据源为空,所有报表章节也会正常渲染:

<jasperReport 
    xmlns="http://jasperreports.sourceforge.net/jasperreports" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
    name="repportBI" 
    pageWidth="595" 
    pageHeight="842" 
    columnWidth="555" 
    leftMargin="20" 
    rightMargin="20" 
    topMargin="20" 
    bottomMargin="20"
    <!-- 新增下面这行配置 -->
    whenNoDataType="AllSectionsNoDetail"
    uuid="95744304-ed70-4001-8031-6cec31c7acbf">

3. 重新编译JRXML

修改完JRXML后,需要在Jaspersoft Studio中重新编译生成.jasper文件,替换掉你项目中./jasperFiles/repportBI.jasper旧文件,再重启Node服务测试即可看到表格数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:36:04