[Seasar-user:12373] Re: [Teeda]intフィールドに@NumberConverterを設定するとValidatorに渡る値がLongに変わる
丹野
[E-MAIL ADDRESS DELETED]
2008年 1月 4日 (金) 16:42:39 JST
丹野です。
小林様、ひが様
ご回答ありがとうございます。
返信が遅くなり申し訳ありません。
> 小林 (koichik) です.
>
> NumberConverter は JSF 標準のもので,
> Long または Double に変換することが
> 仕様で決められています.
> ひがです。
>
> Converterは、複数指定しても意味がないので、
> @IntegerConverterだけを指定するようにしてください。
>
> でも@IntegerConverterってpatternが
> 指定できないんですね。
>
> 将来的には、@IntegerConverterでpatternをサポートしたほうが
> いい気がしますが、とりあえず今のまま試すなら、
> ValidatorでIntegerに変換してください。
いろいろ試した結果、@NumberConverterを使うと以下のようになりました。
(仕様通りの動作ですが)
画面の入力値 => Validatorに渡るvalueのクラス
Integerで扱える範囲 => Long
Longで扱える範囲 => Long
Longで扱えない範囲 => Double
patternを指定したいので、Pageでは@NumberConverterを残し、
@LongRangeを追加することにしました。
public class XxxPage {
@NumberConverter(pattern = "0000")
@LongRange(minimum = 0, maximum = 9999)
@MyXxx()
private int arg1;
}
Validatorでは、valueがDoubleの場合と、
valueがLongでIntegerの範囲を超える場合に例外ではじいて、
上記に該当しない場合にintに変換するようにしました。
将来、@IntegerConverter、@ShortConverterなどで
patternをサポートしていただけるとありがたいです。
以上、よろしくお願いいたします。
Seasar-user メーリングリストの案内