2

我正在尝试将对Java库的调用附加到iReport表达式中。

我用一个非常简单的库尝试了这个,它返回了一个 hello world 字符串。

package utils;
public class Hello {
    public static String hello()
    {
        return "Hello";
    }
}

iReport中,我想使用这个 API。我将上面的库编译成一个jar文件。在Tools -> Options -> Classpath中添加了位置。

然后尝试了以下方法:

  • 在文本字段中编辑表达式new utils.Hello().hello()
  • 创建一个新字段并将其类型设置为utils.Hello. 然后field.hello()在表达式中使用

在这两种情况下,它都抱怨它无法解析你好。但是它在类路径中。我还尝试右键单击报告根并添加utils.Hello/utilsJava导入指令。两者似乎都没有上课。

任何意见是极大的赞赏。

4

2 回答 2

3

你正确的表达方式可能是这样的:

<textFieldExpression><![CDATA[utils.Hello.hello()]]></textFieldExpression>

工作样本:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ..>
    <queryString>
        <![CDATA[SELECT DISTINCT city FROM address ORDER BY city]]>
    </queryString>
    <field name="CITY" class="java.lang.String"/>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{CITY}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[utils.Hello.hello()]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

您还可以在报告中添加导入指令。在这种情况下,表达式将是:

<textFieldExpression><![CDATA[Hello.hello()]]></textFieldExpression>

工作样本:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ... whenNoDataType="AllSectionsNoDetail">
    <import value="utils.Hello"/>
    <title>
        <band height="41">
            <textField>
                <reportElement x="188" y="11" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[Hello.hello()]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

注意:对于这两个示例,jar文件(带有utils.Hello类)必须在类路径中。

在 iReport 中设置类路径

您可以在此处找到有关使用 srciptlets 的更多信息。

于 2012-10-23T07:03:42.127 回答
0

您的字段类型应该是 String ,而不是 utils.Hello

于 2012-10-23T05:50:06.887 回答