您的位置:首页 > 编程语言 > ASP

Jasperreport jrxml 对子报表传参数

2017-08-17 00:00 411 查看
Jasperreport jrxml 对子报表传参数

过程:

1. 子报表需要绝对路径

2. 对子报表传递路径参数

3. 网上很难找到jrxml的传参例子,官网也找不到,都是在图形界面设计的例子

4. 从蛛丝马迹猜到怎么写

http://bbs.csdn.net/topics/300193115/ 在程序里怎么给交叉报表

5. 结果总是报错:发现了以元素 'subreportParameter' 开头的无效内容。以为是XML标签写错

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/strong/gzstrong/workspace/EclipseGWT/StrongPXXT/WebContent/WEB-INF/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/developer4/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
[WARN ](17-08-17 16:47:54) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:54) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:54) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:55) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:56) Found two components for namespace http://jaspe 7fe0
rreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:56) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
[WARN ](17-08-17 16:47:56) Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components net.sf.jasperreports.engine.component.ComponentsEnvironment.findBundles(ComponentsEnvironment.java:126)
net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException; lineNumber: 168; columnNumber: 39; cvc-complex-type.2.4.a: 发现了以元素 'subreportParameter' 开头的无效内容。应以 '{"http://jasperreports.sourceforge.net/jasperreports":reportElement}' 之一开头。
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:247)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:230)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:136)
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:427)
at com.strong.server.module.tcj.controller.MCjController.doInitBaoBiao(MCjController.java:201)
at com.strong.server.module.tcj.controller.MCjController.main(MCjController.java:213)
Caused by: org.xml.sax.SAXParseException; lineNumber: 168; columnNumber: 39; cvc-complex-type.2.4.a: 发现了以元素 'subreportParameter' 开头的无效内容。应以 '{"http://jasperreports.sourceforge.net/jasperreports":reportElement}' 之一开头。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:453)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3232)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1791)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:741)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2715)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
at org.apache.commons.digester.Digester.parse(Digester.java:1745)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243)
... 8 more


6. 又继续找到一个例子,并看回错误日志

http://www.iteye.com/problems/80489 Jasper sub report的记录数问题

7. 最后,才,发,现,这,个,坑,爹,问题

原来,参数标签必须要在<reportElement>之后才行,坑爹啊,居然还有顺序的。。。。

<subreport>
<reportElement uuid="5c982691-19bb-4b82-9353-cec4b96b4d2e" positionType="Float" x="21" y="70" width="720" height="20"/>
<subreportParameter name="SOURCE_DIR">
<subreportParameterExpression><![CDATA[$P{SOURCE_DIR}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{gqkList})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SOURCE_DIR} + "cjtongjilist_3.jasper"]]></subreportExpression>
</subreport>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息