Ошибка при оценке выражения в JasperReports 4.1.3 с использованием языка groovy - PullRequest
1 голос
/ 16 марта 2012

Недавно я обновил библиотеку JasperReports версии 4.1.3.Ранее у меня был отчет, созданный с помощью JasperReports 4.0.2, с языком groovy.Запуск его с JasperReports 4.1.3 генерирует исключение (ClassCastException - не может привести java.lang.String к java.lang.Boolean).

Исключение генерируется несколько правильно, так как я установил строку (например:«abc») для выражения PrintWhen текстового поля.Проблема в том, что до обновления в эту библиотеку отчет работал, даже с таким выражением.

Выражение типа: "any_string" было оценено как true , а пустая строка была оцененакак ложь .

Есть ли свойство, которое можно установить, чтобы оно имело то же поведение, что и раньше, без изменения отчета?(Я знаю, что решение будет состоять в том, чтобы изменить условия, чтобы они были правильными логическими, но для меня это не жизнеспособное решение, так как в нем много отчетов и много сложных условий).

Спасибо!

1 Ответ

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

После анализа журналов изменений и журналов SVN для библиотеки Jasperreports я обнаружил, что в выпуске 4.1.1 было сделано изменение, и приведение к классу больше не выполняется.Это часть рефакторинга, касающегося устаревания класса значений в выражениях.

Из журнала изменений: - свойство класса значений теперь считается устаревшим в объектах выражений;тип выражения больше не требуется указывать;

Решение состоит в том, чтобы изменить печать при выражении на правильное логическое выражение или добавить приведение для каждого отпечатка при выражении.

...