以下はうまくいくようです:
- ウィンドウ>>設定をクリックします
- 機能を選択
- 開発をチェック
- [ OK] をクリックします。
次:
- プロジェクト エクスプローラーを開く
- プロジェクト名を右クリック
- プロパティを選択
- Java ビルド パスの選択
- [ソース] タブをクリックします。
- フォルダの追加をクリック
- [新しいフォルダーの作成] を選択します
- フォルダ名を次のように設定:
src
- [完了] をクリックします
- ソースを選択
- [ OK] をクリックします。
- デフォルトの出力フォルダを設定: プロジェクト名/
build
- [ OK] をクリックします。
通常どおり (パラメータまたはフィールドのいずれかの日付を使用するテキスト フィールドを使用して) レポートを作成します。
- アウトラインパネルでレポートを選択します。
- プロパティパネルを開く
- フォーマット ファクトリ クラスを次のように設定します。
com.company.reports.ReportFormatFactory
次に、 という名前のパッケージ (フォルダ) 内の「src」ディレクトリ内にソース コードを作成しますcom.company.reports
。ReportFormatFactory.java
そのディレクトリに保存されているという名前のファイルに次を貼り付けます。
import java.text.DateFormat;
import java.util.Locale;
import java.util.TimeZone;
import net.sf.jasperreports.engine.util.DefaultFormatFactory;
/**
* Delegates creation of date and number formatters to JasperReports' default
* formatters. This class ensures that dates are formatted consistently across
* all reports.
*/
public class ReportFormatFactory extends DefaultFormatFactory {
/**
* Returns a DateFormat instance that creates dates in YYYY/MM/dd format.
*
* @param pattern Unused.
* @param locale Passed to the DefaultFormatFactory instance.
* @param timezone Passed to the DefaultFormatFactory instance.
*
* @return An object that can format dates.
*/
@Override
public DateFormat createDateFormat(
String pattern, Locale locale, TimeZone timezone ) {
return super.createDateFormat( "YYYY/MM/dd", locale, timezone );
}
}
レポートを実行すると、日付は次のようにフォーマットされYYYY/MM/dd
ます。
形式を変更する場合 (例: にdd/MM/YYYY
)、ソース コードの日付形式行を更新してから、Jaspersoft Studio を再起動します (クラスローダーは、変更後に ReportFormatFactory クラスをリロードしないようです)。
日付形式が変更されるたびに再起動する必要がないようにするには、リソース バンドルを使用します。
- という名前の新しいプロジェクト フォルダーを作成します。
i18n
- プロジェクト名を右クリック
- 新規 >> フォルダを選択
- フォルダ名を
i18n
- [完了] をクリックします
- i18nを右クリック
- 新規 >> その他を選択
- メッセージ エディターを展開する
- リソースバンドルを選択
- [次へ] をクリックします
- 名前を次のように設定します。
ReportsLocale
- ロケールを追加します (例: en_US)
- [完了] をクリックします
i18nディレクトリをビルド プロセスに追加します。
- 国際化を右クリック
- ビルド パスを選択>> ビルド パスの構成
- フォルダの追加をクリック
- 国際化をチェック
- [ OK] をクリックします。
- [ OK]をもう一度クリックします
createDateFormat
メソッドを次のように変更します。
@Override
public DateFormat createDateFormat(
String pattern, Locale locale, TimeZone timezone ) {
String dateFormat = DATE_FORMAT_DEFAULT;
try {
ResourceBundle rb = ResourceBundle.getBundle( "EducationReports" );
String df = rb.getString( DATE_FORMAT );
if( df != null ) {
dateFormat = df;
}
}
catch( Exception e ) {
// If the resource bundle isn't found, use the default date format.
// TODO: Pass this exception into a logger.
}
return super.createDateFormat( dateFormat, locale, timezone );
}
public class
そして、これらの定数をクラス定義に追加します (宣言の直後、 15/16 行あたり):
private final static String DATE_FORMAT = "date.format";
private final static String DATE_FORMAT_DEFAULT = "YYYY/MM/dd";
Jaspersoft Studio を再起動してから:
- ReportsLocaleファイルを編集する
date.format
プロパティを追加する
- プロパティを次のように設定します
dd/MM/YYYY
- すべてのロケールのプロパティ値を設定します。
レポートを実行すると、日付はたとえば 29/02/1976 のようになります。
これを調整して、必要に応じてフィールド値を変更できます。