如何使用没有java的值填充列表? - JRXML或REST

时间:2014-07-10 17:10:33

标签: jasper-reports jasperserver

<parameter name="Bla" class="java.util.List" isForPrompting="false">
        <defaultValueExpression><![CDATA[new ArrayList<String>() {{ add("A");}}]]></defaultValueExpression>
    </parameter>

我想看看如何在不使用java的情况下填充list参数?这可能吗?

错误:

java.lang.NoClassDefFoundError: report_1405012032235_427203 (wrong name: report_1405012032235_427203$3)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at net.sf.jasperreports.engine.util.JRClassLoader.loadClass(JRClassLoader.java:339)
    at net.sf.jasperreports.engine.util.JRClassLoader.loadClassFromBytes(JRClassLoader.java:263)
    at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:102)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:340)
    at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:378)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:462)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:405)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62)
    at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
    at net.sf.jasperreports.engine.fill.BaseFillHandle.<init>(BaseFillHandle.java:75)
    at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.<init>(AsynchronousFillHandle.java:98)
    at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.<init>(AsynchronousFillHandle.java:87)
    at net.sf.jasperreports.engine.fill.AsynchronousFillHandle.createHandle(AsynchronousFillHandle.java:189)
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler$4.run(ReportControler.java:330)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

&#39;报告&#39;是报告名称。

仅当我没有指定内联值时才有效:

new ArrayList<String>()

我在Jasper Server上非常有效,我想了解如何填充此类参数的值。

即使使用defaultValueExpression创建并添加值,我也会很高兴。如果你可以超越并展示如何为这样的jrxml做报告单位的休息,我会奖励额外的代表。

2 个答案:

答案 0 :(得分:0)

请尝试以下代码:

<parameter name="Bla" class="java.util.List" isForPrompting="false">
    <defaultValueExpression><![CDATA[new ArrayList<String>().add(new String("A"))]]></defaultValueExpression>
</parameter>

答案 1 :(得分:0)

您可以使用带有默认表达式的java初始化list参数:

<parameter name="paramName" class="java.util.List"    isForPrompting="false">
    <defaultValueExpression><![CDATA[Arrays.asList(new String[]{"value0","value1","value2"})]]></defaultValueExpression>
</parameter>

请注意,您必须在报告中使用时添加足够的值,否则您将获得超出索引的异常。