3

レポートの作成にDynamicReportsAPIを使用しています。

レポートのロケールを設定し、レポートの日付列をフォーマットしていますが、ロケールが何であっても、日付は常に10/12/200910:54:44AMのようにフォーマットされます。

コードは次のようになります。

rep.setTemplate(Templates.reportTemplate.setLocale(res.getLocale()));
...
if (rs.getString(i).contains("00:00:00"))
   rep.addColumn(col.column(title,  name,  type.dateType()));
else
   rep.addColumn(col.column(title,  name,  type.dateYearToSecondType()));

レポートのロケールに関する日付を自動的にフォーマットする方法はありますか、またはカスタムValueFormatterを使用する必要がありますか?

4

2 に答える 2

3

パラメータマップも試しましたが成功しませんでした

JasperReportBuilder rep = report()
   .setDataSource(query, conn.getConnection())
   .setParameter(JRParameter.REPORT_LOCALE, res.getLocale());
   .setTemplate(Templates.reportTemplate.setLocale(res.getLocale()));

日付を自動的にフォーマットする方法はありません。唯一の方法は、ロケールに関して日付列にパターンを使用することです。

TextColumnBuilder<Date> column = col.column(title,  name,  type.dateType());
if (res.getLocale().equals("EN") {
  column.setPattern("dd.MM.yyyy");
}
else if (res.getLocale().equals("US") {
  column.setPattern("MM/dd/yyyy");
}
else {
   ...
}
rep.addColumn(column);
于 2012-10-14T08:40:12.603 に答える
0

このようにして、動的ジャスパーで日付フィールドをフォーマットすることができました。

ColumnBuilder time = ColumnBuilder.getNew();
time.setTitle("Login Time");
time.setWidth(200);
time.setColumnProperty("emp.logintime", Date.class.getName()).setPattern("dd/MM/yyyy hh:mm:ss a");
drb.addColumn(time.build());
于 2015-03-17T07:07:57.707 に答える