我正在尝试将GXT应用程序中的简单.gif图像提供给jasper,以便它生成Excel报告。
我遇到的问题是,尝试了多个选项之后,我总是在服务器端得到“java.lang.NullPointerException”。
我的Jasper报告中包含以下代码:
<parameter name="logo" class="java.lang.String"/>
...
<image>
<reportElement uuid="2f9765a4-f1dc-4af4-9ddf-fae1c7a3d152" x="110" y="0" width="206" height="40"/>
<imageExpression><![CDATA[$P{logo}]]></imageExpression>
</image>
和Java代码:
FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
URI uri;
try {
uri = new URI(this.getClass().getResource(fileName).getPath());
return new File(uri.getPath());
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
};
parameters.put("logo", fileResolver.resolveFile("logo.GIF"));
我已经尝试了几种解决方案,但都遇到了问题。
logo.gif放置在已编译的GWT应用程序的.war文件夹中,该文件夹的内容存储为.war并部署在Tomcat 7.0服务器上。
希望有更多经验的人会帮助我,让我知道我做错了什么。
最佳答案
FileResolver
对象应该像这样传递给Jasper:
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
您不应该自己调用
fileResolver.resolveFile()
。 FileResolver
方法的调用将由JasperReports本身完成。 This question看起来很像您的(也许您已经看过),并且通过将FileResolver
作为参数传递来工作。您可以找到有关
FileResolver
here的更多信息。该页面提到自JasperReports 5.0.1起不推荐使用FileResolver
。如果您正在使用(或计划使用)5.0.1+,则应尝试使用 JasperResportsContext
。有关JasperReportsContext
的用法示例,您可以参考this question。关于java - 将图像参数从GWT/GXT传递到Jasper报告时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15497583/