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 | ¥,$などの通貨記号 |