我在WebLogic上运行了一个Web应用程序。该应用程序支持JasperReports,并且已经运行了好几年。
最近,一些用户开始使用更复杂的JRXML文件。报告的幕后Java文件现在包含条件操作“?:”。
表达式:
<variable name="Start_Date" class="java.util.Date">
<variableExpression><![CDATA[]]></variableExpression>
<initialValueExpression><![CDATA[
$P{Period}.intValue()==1 ?
DateUtils.truncate(DateUtils.addMonths(new Date(),-1), java.util.Calendar.MONTH)
:
$P{Period}.intValue()==2 ?
DateUtils.truncate((DateUtils.addWeeks(new Date(),-1)),java.util.Calendar.DATE)
:
$P{Period}.intValue()==3 ?
DateUtils.truncate((DateUtils.addDays(new Date(),-1)),java.util.Calendar.DATE)
: new Date()]]></initialValueExpression>
</variable>
我收到编译错误:
Error evaluating expression :
Source text :
$P{Period}.equals(new Integer(1))
?
DateUtils.truncate(DateUtils.addMonths(new Date(),-1),java.util.Calendar.MONTH)
:
$P{Period}.equals(new Integer(2))
?
DateUtils.truncate((DateUtils.addWeeks(new Date(),-1)),java.util.Calendar.DATE)
:
new Date()
;
我目前的猜测是,因为“?:”来自JDK 1.5,所以JasperReports可能会将编译器设置为vesion 1.4。
请让我知道我错过了什么。
我需要配置属性吗?