Ошибка оператора JRXML - PullRequest
       5

Ошибка оператора JRXML

0 голосов
/ 03 октября 2009

Я получаю эту ошибку при компиляции моего файла JRXML в iReport 3.1.2:

com.jaspersoft.ireport.designer.errorhandler.ProblemItem@f1cdfb The operator > is undefined for the argument type(s) java.lang.Integer, java.lang.Integer net.sf.jasperreports.engine.design.JRDesignExpression@eb40fe

Единственное место во всем моем отчете, где я использую оператор>, находится здесь:

<parameter name="dynamicSectionCondition" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[($P{sectionId} != null && $P{sectionId} > new Integer("0")) ? new String("AND loctn_sctn_id = " + $P{sectionId}) : new String("")]]>
    </defaultValueExpression>
</parameter>

Google не был моим другом в этом. У любого эксперта по шаблонам Jasper есть смутное представление о том, что происходит?

Ответы [ 2 ]

1 голос
/ 06 октября 2009

Разобрался, как сравнить 2 целых числа в JRXML. Вместо этого:

$P{sectionId} > new Integer("0")

Решение таково:

$P{sectionId}.compareTo(new Integer("0")) != 0

Это выглядит немного запутанным, но это работает для меня. :)

0 голосов
/ 28 мая 2014

Хотя этот монолог между вами и вами, сэр Ланселот, имеет давнюю историю и возник в средние века, я должен честно предупредить путешественников, которые могут захотеть отнести это древнее знание в их библиотеку.

Если вы хотите узнать, больше ли $ P {sectionId}, чем новое целое число ("0"), то ваше решение даст значение true, даже если $ P {sectionId} меньше, чем новое целое число ("0").

Причина:

(new Integer("-5")).compareTo(new Integer("0"))

приведет к:

-1

, который не будет 0, как в:

$P{sectionId}.compareTo(new Integer("0")) != 0

и, следовательно, условие также будет истинно .

Просто используйте:

$P{sectionId}.compareTo(new Integer("0")) == 1

Помните:

x.compareTo(0) == 1 (if x > 0)
x.compareTo(0) == 0 (if x == 0)
x.compareTo(0) == -1 (if x < 0)

Извините, если вы уже знаете основы, и ваш второй пост был просто для того, чтобы показать общий способ решения проблемы, но я подумал, что если новичок читает ваш первый пост, он / она может предположить, что кто-то может найти числа больше 0, с объявленным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...