JasperReport要求(默认情况下)图像位于“WEB-INF/classes/”中。我想在PDF和普通JSP页面之间共享图像。我不想用垃圾图像文件弄乱类路径。如何强制JR使用不同的图像位置?
gr8qqesn1#
我建议创建以下报告参数:
"/reports/"
$P{ROOT_DIR} + "images/"
$P{ROOT_DIR} + "styles/"
$P{ROOT_DIR} + "subreports/"
$P{SUBREPORT_DIR} + "common/"
这允许images目录相对于ROOT_DIR路径。它还允许您动态更改ROOT_DIR。参数必须按其相对顺序声明。在您的情况下,使用绝对路径:
ROOT_DIR
"/home/user/"
$P{ROOT_DIR} + "Pictures/"
请注意,在操作系统、目录结构、环境(例如,从JasperReports & JSF迁移到JasperReports Server)等之间进行更改,无需修改报告即可完成。(嗯,JasperReports Server需要进行一些修改。)
x6yk4ghg2#
根据@Dave的建议,我将基目录拆分为一个Parameter,并给它一个默认值。这样我就可以指定绝对路径,classpath或url。下面是相关的代码片段:控制器:modelMap.put("ROOT_DIR", "/srv/images/");
modelMap.put("ROOT_DIR", "/srv/images/");
modelMap.put("ROOT_DIR", "http://site.com/images/");
<parameter name="ROOT_DIR" class="java.lang.String"> <defaultValueExpression><![CDATA["/home/user/Pictures/"]]></defaultValueExpression> </parameter> ... <imageExpression class="java.lang.String"> <![CDATA[$P{ROOT_DIR}+"leaf_banner_red.png"]]> </imageExpression>
hgqdbh6s3#
经过进一步检查,似乎我不能在任何地方为图像设置“位置”,但我确实发现您可以通过以下3种方式指定图像:
3条答案
按热度按时间gr8qqesn1#
我建议创建以下报告参数:
"/reports/"
$P{ROOT_DIR} + "images/"
$P{ROOT_DIR} + "styles/"
$P{ROOT_DIR} + "subreports/"
$P{SUBREPORT_DIR} + "common/"
这允许images目录相对于
ROOT_DIR
路径。它还允许您动态更改ROOT_DIR
。参数必须按其相对顺序声明。在您的情况下,使用绝对路径:
"/home/user/"
$P{ROOT_DIR} + "Pictures/"
请注意,在操作系统、目录结构、环境(例如,从JasperReports & JSF迁移到JasperReports Server)等之间进行更改,无需修改报告即可完成。(嗯,JasperReports Server需要进行一些修改。)
x6yk4ghg2#
根据@Dave的建议,我将基目录拆分为一个Parameter,并给它一个默认值。这样我就可以指定绝对路径,classpath或url。下面是相关的代码片段:
控制器:
modelMap.put("ROOT_DIR", "/srv/images/");
modelMap.put("ROOT_DIR", "http://site.com/images/");
jrxml文件:
hgqdbh6s3#
经过进一步检查,似乎我不能在任何地方为图像设置“位置”,但我确实发现您可以通过以下3种方式指定图像: