LoginSignup
7
10

More than 5 years have passed since last update.

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

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10