Вложенность выражений Джаспера - PullRequest
1 голос
/ 26 июля 2011

У меня есть поле ($P{ORDER}.permit), которое равно Integer (0,1), и я хотел бы отобразить его как String («Нет», «Да»). Поэтому я добавил следующие ключи к ResourceBoundle:

order.permit.0=No
order.permit.1=Yes

Я написал выражение $R{order.permit.$P{ORDER}.permit}, но оно не работает. Исключение выдается

net.sf.jasperreports.engine.JRException: слишком много классных классов было генерироваться. Пожалуйста, убедитесь, что вы не используете такие функции Groovy, как замыкания, которые не поддерживаются этим компилятором отчетов.

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

Как мне написать выражение для достижения желаемого результата?

РЕДАКТИРОВАТЬ: str("order.permit." + $P{ORDER}.permit) является ответом. Подробности в посте ниже.

1 Ответ

2 голосов
/ 27 июля 2011

Используйте str() вместо $R{}.

См. Также http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=54665:

$ R {} и str () - это одно и то же.Функциональное отличие состоит в том, что $ R {} может использоваться только с фиксированными / статическими ключами, а str () может использоваться с динамическими ключами сообщений, например, str ("message.prefix." + $ P {message}).

...