JasperReports: динамически устанавливаемый период времени на диаграмме временных рядов.

В настоящее время я сталкиваюсь с некоторыми проблемами с периодами времени на диаграмме временных рядов.

Чего я хочу добиться: - Пользователь может выбрать две даты; Будут представлены данные между этими датами. Пользователь также может выбрать период времени [Год, Месяц, День] перед созданием отчета.

Я пытаюсь установить период времени, установив атрибут timePeriod по параметру следующим образом:

<timeSeriesDataset timePeriod="$P{TimePeriod}">

Но при попытке скомпилировать я получаю следующую ошибку:

org.xml.sax.SAXParseException: cvc-enumeration-valid: 
Value '$P{TimePeriod}' is not facet-valid with respect to enumeration 
'[Year, Quarter, Month, Week, Day, Hour, Minute, Second, Milisecond]'. 
It must be a value from the enumeration.

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

Заранее спасибо за помощь!


person kinkee    schedule 03.05.2012    source источник


Ответы (1)


К сожалению, короткий ответ - нет. См. этот запрос функции http://jasperforge.org/projects/ireport/tracker/view.php?id=4629

Тем не менее, вы можете сделать хак. Три копии карты

<band height="240">
    <printWhenExpression><![CDATA["Year".equals($P{TimePeriod})]]></printWhenExpression>
    <timeSeriesChart>
        ...
        <timeSeriesDataset timePeriod="Year">
        ...
</band>
<band height="240">
    <printWhenExpression><![CDATA["Month".equals($P{TimePeriod})]]></printWhenExpression>
    <timeSeriesChart>
        ...
        <timeSeriesDataset timePeriod="Month">
        ...
</band>
<band height="240">
    <printWhenExpression><![CDATA["Day".equals($P{TimePeriod})]]></printWhenExpression>
    <timeSeriesChart>
        ...
        <timeSeriesDataset timePeriod="Day">
        ...
</band>

Извините, нет ничего чище.

person KCD    schedule 23.05.2012