1

InputTextint 型の Bean プロパティに接続されたコンポーネントがあります。ただし、使用を余儀なくされているNumberConverterのは

を指定integerOnly = trueしても、小数部分を削除することで double を受け入れ、検証フェーズでエラーがスローされません

私の質問は、NumberConverter変換例外とエラーメッセージをスローする方法はありますか (できればクライアント側、つまり、フィールドからタブアウトしたとき)

JSF 1.2を使用しています

(実際、NumberConverter の getAsObject() には、精度が失われた場合に BigDecimal から Integer に変換するときに例外をスローするはずのこのコードがあります。

GenericConverterFactory fac = GenericConverterFactory .getCurrentInstance();
      try
      {
        value = fac.convert(value, expectedType);
      }

)
4

1 に答える 1

4

NumberConverterに委譲する前に文字列値をチェックし、NumberConverter代わりに使用するデフォルトを拡張するカスタム コンバーターを作成します。

public class MyNumberConverter extends NumberConverter {

    public MyNumberConverter() {
        setIntegerOnly(true);
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
        if (submittedValue != null && !submittedValue.matches("[0-9]+")) {
            throw new ConverterException("Please enter digits only");
        }

        return super.getAsObject(context, component, submittedValue);
    }

}
<f:converter converterId="myNumberConverter" />
于 2013-02-13T11:38:49.663 に答える