[Seasar-user:12358] [Teeda]intフィールドに@NumberConverterを設定するとValidatorに渡る値がLongに変わる
丹野
[E-MAIL ADDRESS DELETED]
2007年 12月 29日 (土) 18:32:45 JST
丹野と申します。初めて質問いたします。
Seasar2 2.4.17、Teeda 1.0.11-SP1 で開発しております。
Pageクラスのint/Integerのフィールドに@NumberConverterを設定すると
同じフィールドに設定したValidatorに渡る値が
IntegerからLongに変わってしまう現象が発生します。
関係ない箇所は省略したソースです。
public class XxxPage {
@MyXxx
@IntegerConverter
@NumberConverter(pattern = "0000")
private int arg1;
}
@MyXxxアノテーションのValidator
public class MyXxxValidator implements Validator {
public void validate(FacesContext context,
UIComponent component, Object value)
throws ValidatorException {
int intValue = ((Integer) value).intValue(); // ※1
}
当初、@NumberConverterは設定していなかったのですが、
頭に0をつけて4桁で表示するために@NumberConverterを設定したところ、
上記※1の箇所でClassCastExceptionとなり判明しました。
Numberにキャストすれば回避できるのですが
IntegerからLongに変わってしまうのはしょうがないのでしょうか。
以上、よろしくお願いいたします。
Seasar-user メーリングリストの案内