JasperStudio:将字符串添加到多选输入控件(java.util.Collection)

时间:2019-02-26 02:32:27

标签: collections jasper-reports

  1. 我有一个与参数 $ P {companyId_0} 对应的多选输入控件。
  2. 我想将字符串“ n / a”添加到集合中;所以我创建了一个变量 $ V {nullCompany}
  3. 我创建了一个ArrayList变量 $ V {companyList} ,以将该字符串添加到我的参数集中。

    <!-- PARAMETER: COMPANY COLLECTION -->
    <parameter name="companyId_0" class="java.util.Collection" nestedType="java.lang.String">
      <property name="inputControl" value="true" />
      <parameterDescription>
        <![CDATA[Company ID]]>
      </parameterDescription>
      <defaultValueExpression>
        <![CDATA[java.util.Arrays.asList(new java.lang.String[] {"200","100"})]]>
      </defaultValueExpression>
    </parameter>
    <!--VARIABLE: NULL COMPANY STRING-->
    <variable name="nullCompany" class="java.lang.String" calculation="System">
      <variableExpression>
        <![CDATA["n/a"]]>
      </variableExpression>
    </variable>
    <!--VARIABLE: COMPANY LIST-->
    <variable name="companyList" class="java.util.ArrayList" calculation="System">
      <variableExpression>
        <![CDATA[$P{companyId_0}.add( $V{nullCompany} )]]>
      </variableExpression>
      <initialValueExpression>
        <![CDATA[new ArrayList()]]>
      </initialValueExpression>
    </variable>
    
  4. 产生的错误:

      

    由以下原因引起:java.lang.UnsupportedOperationException   java.util.AbstractList.add(AbstractList.java:148)在   java.util.AbstractList.add(AbstractList.java:108)

  5. 语法尝试2:

    $ P {companyId_0} .add(new String []“ n / a”)

  

错误消息2:   变量必须提供维表达式或数组   初始化程序

  1. 语法尝试3:

    $ P {companyId_0} .add(新字符串[] $ V {nullCompany})

  

错误消息3:   作业的左侧必须是变量。

1 个答案:

答案 0 :(得分:0)

我最终在数据过滤中使用OR语句,以通过Input Control数组OR公司“ n / a”过滤数据:

<queryFilterString>accountingPeriod in (dateStart:dateEnd) and (companyId in companyId_0 or companyId == 'n/a')</queryFilterString>