我想在 jasper 服务器(5.0.0)中使用 xml 数据源。XML 文件是在应用程序运行时“动态”创建的,因此不同的报告将具有不同的 xml 数据源。我知道 jasper 服务器没有定义 XML 数据源,但我发现创建没有数据源的报告然后传递参数 XML_FILE - java.io.File 就可以了。我设法在java servlet中做到了这一点:
jasperReport = JasperCompileManager.compileReport("path to jrxml");
HashMap map = new HashMap();
map.put("XML_FILE", new File(xmlSourceFile));
jasperPrint = JasperFillManager.fillReport(jasperReport,map);
byte [] o = JasperExportManager.exportReportToPdf(jasperPrint);
但不幸的是未能在碧玉服务器上做到这一点。我正在使用休息服务来运行报告,所以我只能使用字符串参数。我试图编写一个脚本,将带有 xml url 的字符串参数转换为 java.io.File
public class XmlScriplet extends JRDefaultScriptlet{
@Override
public void beforeReportInit(){
try {
String param = (String)this.getParameterValue("fileName");
HashMap map = new HashMap();
map.put("XML_FILE", new File(param));
this.parametersMap.putAll(map);
} ...
但这给了我一个空的报告。先感谢您。