[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 メーリングリストの案内