如何在Jasper图表定制器中获取参数值?

时间:2014-02-07 15:12:19

标签: java jasper-reports jfreechart

是否可以在ChartCustomizer中获取参数值(传递给JasperFillManager的fillReport方法)?

示例:

Map<String, Object> params = new HashMap<String, Object>();
params.put("SOME_PARAM", "some string");

JasperPrint jp = JasperFillManager.fillReport(jr, params, dataSource);

然后在customize函数中,paramValue总是为null:

public void customize(JFreeChart freeChart, JRChart jasperChart) {
  String paramValue = (String)getParameterValue("SOME_PARAM"); // always null
}

预期结果:paramValue等于"some string";

实际结果:paramValue等于null

1 个答案:

答案 0 :(得分:0)

方法getParameterValue是指图表参数,这些参数与报表参数不同。 在设计中,您必须在图表级别定义参数:

            <categoryDataset>
                <dataset>
                    <datasetRun subDataset="chartDataset">
                        <datasetParameter name="SOME_CHART_PARAM">
                            <datasetParameterExpression><![CDATA[$P{SOME_PARAM}]]></datasetParameterExpression>
                        </datasetParameter>
                        <dataSourceExpression><![CDATA[$P{XYZ}]]></dataSourceExpression>
                    </datasetRun>
                </dataset>
                      .....
            </categoryDataset>

然后你应该能够得到它:

 getParameterValue("SOME_CHART_PARAM")