使用.jrtx保存在数据库中

时间:2014-02-21 15:46:45

标签: java jasper-reports java-io

我试图使用像blob一样保存的.jrtx文件。

我以这种方式传递文件.jrtx:

InputStream docStyle = new ByteArrayInputStream(myBean.getDocStyle()); 
map.put("docStyle", docStyle);

在我的文件.jrxml中我有:

<parameter name="docStyle" class="java.lang.Object"/>

但是当jaspet试图填写报告时

 JasperFillManager.fillReport(fileToFill, map, dataSuorce);

我收到以下错误:

Caused by: org.xml.sax.SAXParseException: Premature end of file.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1916)
at net.sf.jasperreports.engine.xml.JRXmlTemplateLoader.loadTemplate(JRXmlTemplateLoader.java:195)
... 78 more

如何解决?

1 个答案:

答案 0 :(得分:0)

问题是,当文件偏移位置计数器移动到文件末尾时读取流,在其他时间使用相同的流,您将收到错误。我使用docStyle.reset();

解决了问题