我有一个报告,我将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中引用这些值的方法吗?
有没有办法从报告中访问这些属性?还是另外一个建议来实现这个目标?
答案 0 :(得分:2)
可以在资源包的帮助下完成。
您可以创建资源文件,然后在 $R{}
语法的帮助下使用“变量”。
文件夹结构为:
reports images 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 代码和模板重新编译即可使用。
备注强>: