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クラスからこのメソッドのソースコードを見て確認できます。
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)at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140)at net.sf.jasperreports.engine .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。 :518)ar.com.fdvs.dj.core.DynamicJasperHelper.generateJRXML(DynamicJasperHelper.java:403)
スクリプトレットを使ってみるべきだと思います。これがサンプルです。