JasperReports версии 3.7.1 (поддерживается DynamicJasper версии 3.1.9) поддерживает только эти классы для выражения текстового поля:
- java.lang.Boolean
- java.lang.Byte
- java.util.Date
- java.sql.Timestamp
- 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 class:
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.verifyDesign (JRAbstractCompiler.java:258)
в
net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport (JRAbstractCompiler.java:140)
в
net.sf.jasperreports.engine.JasperCompileManager.compileReport (JasperCompileManager.java:215)
в
ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport (DynamicJasperHelper.java:542)
в
ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport (DynamicJasperHelper.java:518)
в
ar.com.fdvs.dj.core.DynamicJasperHelper.generateJRXML (DynamicJasperHelper.java:403)
Я думаю, вам стоит попробовать скриптлет. Вот образец .