JasperStudio: добавление строки в несколько элементов управления вводом (java.util.Collection) - PullRequest
0 голосов
/ 26 февраля 2019
  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 at java.util.AbstractList.add (AbstractList.java:148) at java.util.AbstractList.add (AbstractList.java:108)

  5. Синтаксическая попытка # 2:

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

Сообщение об ошибке # 2: переменная должна содержать либо выражения измерения, либо инициализатор массива

Синтаксическая попытка № 3:

$ P {companyId_0} .add (новая строка [] $ V {nullCompany})

Сообщение об ошибке № 3: Левая часть назначения должна быть переменной.

1 Ответ

0 голосов
/ 22 марта 2019

Я закончил тем, что использовал оператор OR в фильтрации данных, чтобы отфильтровать данные по массиву Input Control OR компании "n / a":

<queryFilterString>accountingPeriod in (dateStart:dateEnd) and (companyId in companyId_0 or companyId == 'n/a')</queryFilterString>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...