3

我有一份报告,其中我将 ROOT_DIR 定义为参数。当我在我的 servlet 中呈现报告时,我将其传入。

像这样的东西:

 <parameter name="ROOT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["/Some/Path/To/Reports"]]></defaultValueExpression>
</parameter>
<parameter name="IMAGES_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[$P{ROOT_DIR}+"/images"]]></defaultValueExpression>
</parameter>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[$P{ROOT_DIR}+"/"]]></defaultValueExpression>
</parameter>

我的问题是我们现在有更多的开发人员在处理报告,所以我想找到一种方法,不要让每个人在每次提交到他们的 git 工作区/主目录时都更改 ROOT_DIR 上的 defaultValueExpression。

我在想我们可以在 iReport 中使用一个属性(Preferences -> iReport -> Jasper Report Properties Tab),但我似乎找不到从 defaultValueExpression 引用这些值的方法?

有没有办法从报告中访问这些属性?或其他建议来实现这一点?

4

1 回答 1

2

它可以在资源包的帮助下完成。

$R{}您可以创建资源文件,然后在语法的帮助下使用“变量” 。

样本

文件夹结构为:

报告
    图像
        Number1.png

属性文件(folders.properties):

ROOT_DIR=/reports

资源文件的名称是在报告的属性resourceBundle的帮助下设置的。

在我的示例中,我设置了如下属性:resourceBundle="folders".

您可以这样做,例如在iReport中:

在此处输入图像描述

jrxml文件:

<?xml version="1.0" encoding="UTF-8"?>
<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="report33" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" resourceBundle="folders" uuid="6c23de18-90a0-4246-85ab-1a6fae930bd4">
    <parameter name="IMAGES_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA[$R{ROOT_DIR}+"/images"]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="88" splitType="Stretch">
            <image scaleImage="RealSize">
                <reportElement uuid="7745c4a6-ce7e-4fd8-aae9-4752488dd038" x="325" y="19" width="64" height="56"/>
                <imageExpression><![CDATA[$P{IMAGES_DIR} + "/Number1.png"]]></imageExpression>
            </image>
        </band>
    </title>
</jasperReport>

iReport中的报表设计:

在此处输入图像描述

结果将是(通过iReport中的预览):

在此处输入图像描述

开发人员团队的每个成员都可以更改属性文件中的路径(由ROOT_DIR键设置),并且此解决方案无需使用Java代码和模板重新编译即可工作。


备注

  1. 属性文件应该在类路径中。
  2. 有关国际化报告模板的信息。
于 2013-09-11T20:48:02.587 回答