与数据本身在同一数据源中的列和表头(json数据源)

时间:2017-11-05 07:27:16

标签: jasper-reports

我的报告中有一个表元素的json数据源。我的json是 -

[{
        "line_num": {
            "oldVal": "1",
            "newVal": "5"
        },
        "product1": {
            "oldVal": "product1old",
            "newVal": "product1new"
        }
}, {
    "line_num": {
        "oldVal": "4",
        "newVal": "7"
    },
    "product2": {
        "oldVal": "product2old",
        "newVal": "product2new"
    }
}
]

这适用于我的报告,但后来我需要添加数据源中的列和表标题。

所以我试着将它作为一个自己的对象添加到上面的json数组中,如下所示:

[{
        "tableH": "My Table Header"  ,         
        "col1H": "Line No."  ,     
        "col2H": "My Product"  
    }, {
        "line_num": {
            "oldVal": "1",
            "newVal": "5"
        },
        "product1": {
            "oldVal": "product1old",
            "newVal": "product1new"
        }

    }, {
        "line_num": {
            "oldVal": "4",
            "newVal": "7"
        },
        "product2": {
            "oldVal": "product2old",
            "newVal": "product2new"
        }
    }
]

但问题是当有很多行大于页面的高度时,第二页上的标题为空是有意义的,因为第一行obj(标题obj)从第二行开始是未知的,< / p>

但我不知道如何以另一种方式从服务器传递我的标题。

唯一有效的方法是将所有标题添加到数组中的每个obj中,但我不能这样做,因为它的确是错误的。

我还尝试将这些行放在这样的数组中:

[{
        "tableH": "My Table Header"  ,        
        "col1H": "Line No."  ,        
        "col2H": "My Product"  ,
        "Lines": [{
                "line_num": {
                    "oldVal": "1",
                    "newVal": "5"
                },
                "product1": {
                    "oldVal": "product1old",
                    "newVal": "product1new"
                }

            }, {
                "line_num": {
                    "oldVal": "4",
                    "newVal": "7"
                },
                "product2": {
                    "oldVal": "product2old",
                    "newVal": "product2new"
                }
            }
        ]
    }
]        

但是然后字段没有正确传递,例如传递给 - lines.line_num.newVal,字段是:[“5”,“7”]。

我真的需要帮助,我会感谢任何有用的回复。

1 个答案:

答案 0 :(得分:0)

将数据集与静态数据混合似乎是个坏主意。我的第一次尝试是通过scriptlet获取静态数据。

否则,您可以在组标题组件中添加列名称,并利用组的isReprintHeaderOnEachPage属性提供的功能。

http://jasperreports.sourceforge.net/schema.reference.html#group_isReprintHeaderOnEachPage