上記の問題を調査した後、私自身がなんとか解決しました。JasperServerのデータコンバーターの構成を調べましたが、Calendarクラスで使用できるそのようなデータコンバーターはありません。
私が見つけた最善の方法は、Java Calendarクラスで実行するロジック全体を記述し、それをjarにパッケージ化するカスタムクラスを作成することです。次に、そのjarAPIを直接使用して目的を解決します。
私の場合、レポート期間(レポートを生成している期間)を計算したいと思いました。私にとって、この結果の入力は、レポートを生成している月と年でした。以下は私が書いたコードスニペットです
public static String calculateReportingPeriod(String year, String month,
String dateFormat) {
String reportingPeriod = new String();
Calendar calendar = Calendar.getInstance();
if (year == null || year.isEmpty()) {
Integer lyear = Calendar.getInstance().get(Calendar.YEAR);
year = lyear.toString();
}
if (month == null || month.isEmpty()) {
Integer lmonth = Calendar.getInstance().get(Calendar.MONTH);
/**
* -1 because report in generate for previous month
*/
lmonth = lmonth - 1;
month = lmonth.toString();
} else {
Integer lmonth = Integer.parseInt(month);
lmonth = lmonth - 1;
month = lmonth.toString();
}
if (dateFormat == null || dateFormat.isEmpty()) {
dateFormat = DATE_FORMAT;
}
/**
* calculating max days in the given month and given year
*/
calendar.set(Calendar.YEAR, Integer.parseInt(year));
calendar.set(Calendar.MONTH, Integer.parseInt(month));
Integer maxDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Integer.parseInt(year), Integer.parseInt(month),
START_DATE);
Date reportingStartDt = calendar.getTime();
reportingPeriod = new SimpleDateFormat(dateFormat)
.format(reportingStartDt);
reportingPeriod = reportingPeriod.concat(EMPTY_STRING);
reportingPeriod = reportingPeriod.concat(DASH_SEPERATOR);
reportingPeriod = reportingPeriod.concat(EMPTY_STRING);
calendar.set(Calendar.DATE, maxDays);
Date reportingEndDt = calendar.getTime();
reportingPeriod = reportingPeriod.concat(new SimpleDateFormat(
dateFormat).format(reportingEndDt));
return reportingPeriod;
}
次に、iReportsとJasperServerの両方でこのjarを使用して、入力から目的の結果を取得しました。