Jasper参数值

时间:2016-01-27 12:26:49

标签: jasper-reports

添加了更多信息

  1. 对我来说,JSON是数据源。
  2. 我们通过点击rest API接收JSON。 Rest API可能需要很少的参数才能通过。
  3. 现在,在JRXML中配置了API需要的参数和jasper参数。在下面的示例ReportTypeList,ReportType,dateParam,SheduleDate是在JRXML中配置的参数.heduleDate是用于查询JSON的过滤器参数。 ReportType和DateParam将用于命中API以获取JSON数据源。
  4. 现在,如果你在下面观察ReportTypeList,他们已经提到了类似defaultValueExpression的东西,他们试图保留一些值。现在我需要从Java中读取这个集合,并在UI上的组合框中动态填充这些值。

    对于参数ReportType,如果用户没有从UI中选择任何内容我需要考虑默认值,我需要获取默认值。

    例如:

    <parameter name="ReportTypeList" class="java.util.List">
        <defaultValueExpression><![CDATA[$P{ReportTypeList}.set( "Daily", "Weekly",Monthly" )]]></defaultValueExpression>
    </parameter>
    <parameter name="ReportType" class="java.util.List">
        <defaultValueExpression><![CDATA[$P{ReportType}.get[0]]]></defaultValueExpression>
    </parameter>
    <parameter name="DateParam" class="java.util.Date"/>
    <parameter name="SheduleDate" class="java.util.Date"/>
    

1 个答案:

答案 0 :(得分:1)

使用defaultValueExpression时,您需要考虑对象类是null,因此您需要实例化它!

ReportTypeList - java.util.List

$P{ReportTypeList}.set( "Daily", "Weekly",Monthly")

null.set(“”),这可能永远不会有效,Nullpointerset(String,String,String)不存在java.util.List上的方法

正确的表达方式可能是:

<parameter name="ReportTypeList" class="java.util.List">
    <defaultValueExpression><![CDATA[java.util.Arrays.asList(new String[]{"Daily", "Weekly","Monthly"})]]></defaultValueExpression>
</parameter>

ReportType - java.util.List ??,可能应该是java.lang.String

$P{ReportType}.get[0]上的get[0]java.util.List.get(0)不正确它应该是java.lang.String而且此返回是defaultExpression,但是为什么要使用这样的表达式<parameter name="ReportType" class="java.lang.String"> <defaultValueExpression><![CDATA["Daily"]]></defaultValueExpression> </parameter> ,只需返回你的字符串!

正确的表达方式可能是:

defaultExpression

DateParam - java.util.Date

你没有new java.util.Date(),但是记住你需要做<div> ....之类的事情,你只能使用这个对象中存在的构造函数!