iReport - Переменная - Строка [] - Выражение начального значения - PullRequest
1 голос
/ 10 января 2012

Сегодня я обнаружил в iReport, что не могу установить выражение начального значения String [], используя обычно допустимый синтаксис Java, такой как:

private String[] fruitNames = new String[] {"Apple", "Banana"};

Экстраполировать это в переменную iReport было бы так просто (я бы подумал):

Имя : fruitNames

ПеременнаяClass : java.lang.String []

Расчет : Ничего

Тип сброса : Отчет

IncrementType : Нет

Выражение начального значения : новая строка [] {"Apple", "Banana"}

При компиляции моего шаблона отчета я получаю сообщение об ошибке:

Исключения при компиляции: com.jaspersoft.ireport.designer.compiler.ErrorsCollector@683896bd> net.sf.jasperreports.engine.JRException: возникли ошибки при компиляции выражений отчета c> lass file: org.codehaus.groovy.control. MultipleCompilationErrorsException: сбой запуска:> calculator_Fruits_1326149102402_537017: 281: неожиданный токен: Apple @ line 281, столбец 55.> 1 ошибка

В редакторе кода для установки начального значения я замечаю, что анализатор подчеркивает красными фигурные скобки {}. Это имеет смысл, поскольку iReport интерпретирует эти фигурные скобки как идентификаторы параметров, полей или переменных. Итак, я вижу, где может существовать конфликт, но знает ли кто-нибудь правильный синтаксис для инициализации String [] в поле «Выражение начального значения»?

Примечание: я обошел проблему, просто установив значение в Scriptlet, но мне действительно интересно узнать правильный синтаксис, если он существует.

Ответы [ 2 ]

1 голос
/ 10 января 2012

Вы должны быть в состоянии получить то, что вам нужно, установив класс переменной в java.util.Collection. Затем установите начальное значение следующим образом:

java.util.Arrays.asList( "Apple", "Banana" )

Кроме того, ваша ошибка указывает на то, что язык вашего отчета установлен на Groovy. Это хорошо, если это намеренно, но, возможно, это случайно. Я считаю, что все упрощается, если изменить язык отчета на Java.

Обычно я не устанавливаю переменный класс в такой массив. Я установил его на java.util.Collection, как указано выше. Но я не знаю, есть ли какое-то важное отличие.

0 голосов
/ 07 марта 2014

Я просто столкнулся с той же проблемой. Реальная проблема заключается в том, что вы используете выражение Java, но инструмент iReports настроен на язык Groovy, следовательно, выражение Groovy. Предыдущий пользователь упомянул это. Если вы вошли в свойства, найдите строку Language и измените ее на Java. Это сработало для меня. Предыдущий пользователь прав, но просто хотел указать, что реальная проблема, на мой взгляд, в вашем отчете, настроенном на Groovy.

...