コンバータのエラーメッセージではまる

テキストフィールドに整数型と結びつける場合使用されるコンバータは

javax.faces.convert.IntegerConverter

その際に使用されるリソースのキーは

javax.faces.converter.IntegerConverter.INTEGER

この微妙な違いがわかるだろうか。ここはまるよなぁ。

ちなみにML版だと日本語で表示されるので置き換える必要がないように見えるが、置き換えないと使い物にならない。理由はエラーが起きているコンポーネントのidを表示してしまうためだ。JSFによって自動生成された長ったらしいidを表示されてもこまる。Labelプロパティを設定しているとそれが使われるのだが、このLabelプロパティはWebUIコンポーネントでは必ずテキストフィールドの前に表示される。使い物になりやしない。コンポーネントの設計してる人って実際の業務アプリとか書いたことあるのかなぁ・・・。


そしてもうひとつそのままでは使えない重大な理由がある。それは日本語化されているのだが、直訳されたメッセージなのかさっぱりわからないということ。

上のjavax.faces.converter.IntegerConverter.INTEGERのデフォルトのメッセージは以下のようになる。

must be a number consisting of one or more digits.

そして日本語化されたメッセージは以下のとおり。

1つ以上の数字で構成される番号にする必要があります。

単純に「数値を入力してください」という意味の文章であるとは、ぱっとみでわかる人は少ないと思う。「number」が番号と表記されているのが特にわかりにくい原因だろうか。