如何使用JasperReports

时间:2016-12-15 23:14:38

标签: java jasper-reports

我有一个JasperReports的jrxml文件,其中包含带有一个int参数的Java方法代码调用。使用单个参数,所有这些都适用于以下代码。 eventProjectid是一个整数

<textField>
    <reportElement positionType="Float" x="250" y="79" width="103" height="15"/>
    <textFieldExpression><![CDATA[com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject($F{eventProjectId})]]></textFieldExpression>
</textField>

我需要引入一个不起作用的第二个参数,我得到的只是一个空值。这是jrxml代码 eventProjectId是整数 eventType是字符串

<textField>
    <reportElement positionType="Float" x="250" y="79" width="103" height="15"/>
    <textFieldExpression><![CDATA[com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject($F{eventProjectId},$F{eventType})]]></textFieldExpression>
</textField>

这是我试图调用的Java代码

public static String getCubeXAxisLabelMaxConsequenceProject(Integer projectId, String eventType){
    ProjectEntity projectEntity = projectService.findById(projectId);

    CubeConfigEntity cubeConfigEntity=cubeConfigService.findByCubeTypeName(eventType,projectEntity.getCubeConfigName());
    if (cubeConfigEntity != null) {
        return cubeConfigEntity.getxAxisName();
    } else {
        return "";
    }
}

为了清楚起见,我试图将调用调试为无可用。我相信方法签名试图从jrxml到Java方法的比较存在问题。在调试中,单个参数方法被调用,但是带有两个参数的方法永远不会被调用。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你的方法

com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject()

经历了两个版本,对吗?一个接受单个整数参数,另一个版本接受整数和字符串作为参数。请仔细检查您的japser报告是否指向新版本的类文件或库。

另外,请确保您使用的两个字段确实包含有效值

$F{eventProjectId}
$F{eventType}