JasperReports 3.7.1 版(DynamicJasper 3.1.9 版支持)仅支持文本字段表达式的此类:
- java.lang.Boolean
- java.lang.字节
- java.util.日期
- java.sql.时间戳
- java.sql.Time
- java.lang.Double
- java.lang.Float
- java.lang.Integer
- java.lang.Long
- java.lang.Short
- java.math.BigDecimal
- java.lang.Number
- java.lang.String
您可以通过net.sf.jasperreports.engine.design.JRVerifier类查看此方法的源代码来确保这一事实:
private static synchronized String[] getTextFieldClassNames()
{
if (textFieldClassNames == null)
{
textFieldClassNames = new String[]
{
java.lang.Boolean.class.getName(),
java.lang.Byte.class.getName(),
java.util.Date.class.getName(),
java.sql.Timestamp.class.getName(),
java.sql.Time.class.getName(),
java.lang.Double.class.getName(),
java.lang.Float.class.getName(),
java.lang.Integer.class.getName(),
java.lang.Long.class.getName(),
java.lang.Short.class.getName(),
java.math.BigDecimal.class.getName(),
java.lang.Number.class.getName(),
java.lang.String.class.getName()
};
Arrays.sort(textFieldClassNames);
}
return textFieldClassNames;
}
private void verifyTextField(JRTextField textField)
{
verifyReportElement(textField);
verifyFont(textField);
verifyAnchor(textField);
verifyHyperlink(textField);
if (textField != null)
{
JRExpression expression = textField.getExpression();
if (expression != null)
{
try
{
String className = expression.getValueClassName();
if (className == null)
{
addBrokenRule("Class not set for text field expression.", expression);
}
else if (Arrays.binarySearch(getTextFieldClassNames(), className) < 0)
{
addBrokenRule("Class \"" + className + "\" not supported for text field expression.", expression);
}
}
catch (JRRuntimeException e)
{
addBrokenRule(e, expression);
}
}
}
}
如您所见,该verifyTextField
方法会在您的情况下生成此消息。
完整的堆栈跟踪:
- 文本字段表达式不支持类“org.joda.time.LocalDate”。net.sf.jasperreports.engine.design.JRValidationException:报告设计无效:
- 文本字段表达式不支持类“org.joda.time.LocalDate”。在 net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140) 在 net.sf.jasperreports.engine 的 net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:258) .JasperCompileManager.compileReport(JasperCompileManager.java:215) at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:542) at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java :518) 在 ar.com.fdvs.dj.core.DynamicJasperHelper.generateJRXML(DynamicJasperHelper.java:403)
我认为您应该尝试使用scriptlet。这是示例。