如何在JasperReports 3.5上正确插入JavaScript子报表到Java主报表?

时间:2017-01-15 22:05:37

标签: javascript jasper-reports rhino subreport

使用iReport和JasperReport 3.5(遗产,不是我的选择) 我在Java中有一个主要的空白报告,并试图插入带报告语言= JavaScript的空白子报告。

两者都只是“选择1作为Field1来自双重”查询和一个标签组件。

结果JasperReports在后面的堆栈中引发错误(报告代码中没有“new java.lang.Integer(1)”)

  

错误填充打印... net.sf.jasperreports.engine.fill.JRExpressionEvalException:错误评估表达式:   源文本:new java.lang.Integer(1) net.sf.jasperreports.engine.JRRuntimeException:net.sf.jasperreports.engine.fill.JRExpressionEvalException:计算表达式时出错:   源文本:new java.lang.Integer(1)引起:net.sf.jasperreports.engine.fill.JRExpressionEvalException:评估表达式时出错:   源文本:new java.lang.Integer(1) bla-bla-bla引起: java.lang.RuntimeException:没有与当前线程关联的上下文   在org.mozilla.javascript.Context.getContext(Context.java:2206)   在org.mozilla.javascript.SecurityController.createLoader(SecurityController.java:136)   在org.mozilla.javascript.optimizer.Codegen.defineClass(Codegen.java:143)

怎么了?

找到something with Birt,但不知道如何在JasperReports中进行此操作

  

必须为每个单独的线程利用Javascript上下文   如下所示,然后从工作线程运行打印任务。

org.mozilla.javascript.Context.enter();
<BIRT print task...>
org.mozilla.javascript.Context.exit();

UPDATE 当属性包含在内时,似乎会出现此报告。

然后我将子报告语言更改为“java”,然后错误消失。

主要报告是

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report0" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString language="SQL">
        <![CDATA[select 123123 as DFG from dual]]>
    </queryString>
    <field name="DFG" class="java.math.BigDecimal">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <title>
        <band height="79">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[MAIN]]></text>
            </staticText>
            <subreport>
                <reportElement stretchType="RelativeToTallestObject" x="0" y="20" width="555" height="59"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression class="java.lang.String"><![CDATA["subReport1.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </title>
</jasperReport>

子报告

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" language="javascript" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString>
        <![CDATA[select 155554444445554 as Hy from dual]]>
    </queryString>
    <field name="HY" class="java.math.BigDecimal">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <background>
        <band/>
    </background>
    <title>
        <band height="79">
            <staticText>
                <reportElement x="87" y="29" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[Hello from subreport]]></text>
            </staticText>
        </band>
    </title>
    <detail>
        <band height="70">
            <textField>
                <reportElement x="63" y="14" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.math.BigDecimal"><![CDATA[$F{HY}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

0 个答案:

没有答案