Jasperreports 5.6.0 で、Java8 LocalDate を出力するには、Jassperreports がテンプレートを読んで実行するコンパイラ
を別に用意しないとならなに。もう、Jassperreports が Java 8 に対応しないからだ。
コミュニティを探した結果。Eclipse の jdt コンパイラを指定する方法を見つけた。
→ Jasperreports 6.5.1 以降では、もはやその必要はない!
Jasperreports でLocalDate をフォーマット出力 - Oboe吹きプログラマの黙示録
環境。。。
<dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>5.6.0</version> <exclusions> <exclusion> <groupId>eclipse</groupId> <artifactId>jdtcore</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.4</version> </dependency>
jrxml での設定、1つ1つの jrxml ファイルに、設定が必要になるのが難点だけど。
LocalDate の出力フォーマットを指定する為に、java.time.format.DateTimeFormatter を使うなら、
インポート設定をする。
つまりこれは
<import value="java.time.format.DateTimeFormatter"/>
に相当して、XML ファイル上。。
<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample2_subreport1" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="e7afe545-1b11-4653-a894-10c52167832f"> <property name="ireport.zoom" value="2.5937424601000028"/> <property name="ireport.x" value="414"/> <property name="ireport.y" value="0"/> <import value="java.time.format.DateTimeFormatter"/>
のように、追加される。
Field および Parameter の指定では、クラス定義として。java.time.LocalDate を指定する必要がある。
フィールドの例
<field name="at_date" class="java.time.LocalDate"/>
パラメータの例
<parameter name="nowdate" class="java.time.LocalDate" isForPrompting="false"/>
これを出力する記述として、、
$F{at_date}.format(DateTimeFormatter.ofPattern("yyyy年 M月 d日")) $P{nowdate}.format(DateTimeFormatter.ofPattern("yyyy年 M月 d日"))
を jrxml に記述する。