我有一个端点生成的以下json:

{
    "data":
    {
        "id":"2",
        "type":"mytype",
        "attributes":
        {
            "header":
            {
                "name": "Name",
                "code": "Code"
            },
            "dataset": [
                {}]
        },
        "links":{"self":"http://localhost:1025/"}
    }
}


我使用JSONAdapter并查询“数据集”属性来填充我的报告。它工作正常。
但我想添加使用json响应的“标头”部分的页面标头。

有没有没有通过参数传递这些信息的方法?

最佳答案

如果您愿意切换到JSONQL,则可以轻松实现。

考虑以下示例json:

{
    "headers": {
        "name": "Bla bla bla",
        "date": "2016-01-01"
    },
    "dataset": [
        {
            "id": 1,
            "val": 11
        },
        {
            "id": 2,
            "val": 22
        }
    ]
}


如果要以“静态”方式访问“ headers.name”,则这将是相关的JRXML片段:

<queryString language="jsonql">
    <![CDATA[dataset]]>
</queryString>
<field name="Name" class="java.lang.String">
    <property name="net.sf.jasperreports.jsonql.field.expression" value="$.headers.name"/>
</field>
<field name="Id" class="java.lang.String">
    <property name="net.sf.jasperreports.jsonql.field.expression" value="id"/>
</field>
<field name="Val" class="java.lang.String">
    <property name="net.sf.jasperreports.jsonql.field.expression" value="val"/>
</field>


如果要从当前迭代访问“ headers.name”,则需要在“名称”字段中输入以下内容:

<field name="Name" class="java.lang.String">
    <property name="net.sf.jasperreports.jsonql.field.expression" value="^{2}.headers.name"/>
</field>


从本质上讲,它转换为:在树上浏览两次,然后选择“ headers.name”

关于java - Jasper使用json响应填充页面标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48914163/

10-10 17:22