如何从报表中访问jasper报表属性以在每台开发人员计算机上指定ROOT_DIR位置?

时间:2013-09-11 11:04:55

标签: jasper-reports ireport

我有一个报告,我将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>

我的问题是我们现在有更多的开发人员正在处理这些报告,所以我想找到一种方法,让每个人都改变ROOT_DIR上的defaultValueExpression,每次提交到他们的git workspace / home目录。

我在想我们可以在iReport中使用属性(首选项 - &gt; iReport - &gt; Jasper报告属性选项卡),但我似乎找不到从defaultValueExpression中引用这些值的方法吗?

有没有办法从报告中访问这些属性?还是另外一个建议来实现这个目标?

1 个答案:

答案 0 :(得分:2)

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

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

样本

文件夹结构为:

reports
    images
        Number1.png

属性文件( folders.properties ):

ROOT_DIR=/reports

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

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

您可以这样做,例如在 iReport

enter image description here

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 中的报告设计:

enter image description here

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

enter image description here

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


备注

  1. 属性文件应位于类路径中。
  2. 有关Internationalized Report Templates
  3. 的信息