【JSF】標準コンバーターについて

jsf jsf

JSF備忘録として今回もJSFの記事です

JSFシステムはコンポーネントが受け取った値をバッキングビーンの変数に代入します
文字列を変数と同じ方に変換するときに使用されるのがコンバータです

標準コンバータ

入力された文字列データをバッキングビーンの変数と同じ方に変換するために自動的に使用されます
またバッキングビーンの値をJSFページに出力するときも逆変換のために使用されます

標準コンバータ
BooleanConverter
LongConverter
EnumConverter
ByteConverter
FloatConverter
DateTimeConverter
CharacterConverter
DoubleConverter
NumberConverter
ShortConverter
BigDecimalConverter
IntegerConverter
BigIntegerConverter

日付と数値に関してはFaceletsタグとしてプログラマが利用できます
日付はf:convertDateTimeタグ、数値はf:convertNumberタグ

Date型のコンバータ(f:convertDateTime)

f:convertDateTimeタグは、文字列をDate型に変換、または逆変換をするコンバータです

日付の入力

日付を入力するときのf:convertDateTimeの使い方は、h:inputTextタグの子要素として記述します
その際のpattern属性に日付の入力形式を指定します

<!-- 例2016/1/1のように出力 -->
<h:inputText value="#{bean.date}">
    <f:convertDateTime pattern="yyyy/M/d"/>
</h:inputText>

日付の出力

日付を出力するときのf:convertDateTimeの使い方は、h:outputTextタグの子要素として記述します
その際のpattern属性に日付の入力形式を指定します

<!-- 例2016年10月01日のように出力 -->
<h:outputText value="#{bean.date}">
    <f:convertDateTime pattern="yyyy年MM月dd日"/>
</h:outputText>

パターン文字

文字 意味
y
M
d
E 曜日
a 午前または午後
h 時(12時間制)
H 時(24時間制)
m
s

属性

f:convertDateTimeの属性

属性 初期値
type date, time, both(時刻と日付)のどれかを指定 false
dateStyle default, short, medium, long, fullのどれかを指定 -
timeStyle default, short, medium, long, fullのどれかを指定 -
pattern yyyy/M/dなどのフォーマット指定 -
local ja, enなどの言語の地域を指定 -
timeZone 指定値は(java.util.TimeZoneクラス)を参照 GMT

数値型のコンバータ(f:convertNumber)

f:convertNumberタグは、文字列と数値の変換を行うコンバータです
主に出力で使用し小、数点の桁数を指定したり、通貨形式で表示したりすることができます

数字の出力

数値を¥10,000のように表示するには、type属性currencyを指定します
currencyを指定すると、通貨記号がつき、3桁ごとにカンマで区切られます

<!-- ¥10,000のように出力 -->
<h:outputText value="#{bean.amount}">
    <f:convertNumber type="currency" />
</h:outputText>

また、任意に整形して表示するには、数値のパターン文字を使用します

<!-- 3桁ごとにカンマで区切って出力 -->
<h:outputText value="#{bean.amount}">
    <f:convertNumber pattern="###,##0" />
</h:outputText>

値が0の場合は「0」と表示されます
末尾の0を#とすると値が0の時は空白の表示となります

パターン文字

文字 意味
# 数字、1230は、「###,###」の指定で「1,230」と0を削って表示
0 数字、1230は、「000,000」の指定で「001,230」と0をそのまま表示
. 小数点
, 数字の間に挿入するカンマ
% 100倍した値に%をつけて表示

属性

f:convertNumberの属性

属性
type number, currency, percent
pattern フォーマット指定
maxFractionDigits 小数点以下の最大桁数
minFractionDigits 小数点以下の最小桁数
maxIntegerDigits 最大桁数
minIntegerDigits 最小桁数
IntegerOnly trueとすると整数部分だけをパース
groupingUsed falseとすると区切り文字を挿入しない
local ja, enなどの言語の地域を指定
currencyCode JPY, USD, EURなどISO_4217での通貨コードを指定
currencySymbol ¥,$などの通貨記号