2010-11-28 6 views
4

私は魔法使いに多くのフィールドを持っています。 <f:validateLength>タグで問題ありません。このバリデータのカスタムメッセージを追加することもできます。フィールドにカスタマイズされた<f:validateLength>タグのエラーメッセージを追加します。

問題はメッセージをフィールドごとにカスタマイズする必要があることです。例えば。 firstnameフィールドに「名前が短すぎます」または「名前が長すぎます」というメッセージがある必要があります。surnameには「姓が短すぎます」または「姓が長すぎます」などがあります。

答えて

5

label属性を使用します。

<h:inputText label="First name"> 

メッセージテンプレートの{1}がこれに置き換えられます。

javax.faces.validator.LengthValidator.MAXIMUM: {1} too long.  
javax.faces.validator.LengthValidator.MINIMUM: {1} too short. 
+0

さらにカスタマイズが必要な場合はどうすればよいですか?例えば。 「名があまりにも短い」、「もっと長いパスワードを提供してください」JSFで可能ですか? JSR303 Bean Validationを使用することもできます。そこでは、各フィールドにメッセージを指定できますが、値が小さすぎると値が長すぎるため、別のメッセージを指定できません。 – amorfis

+2

異なるメッセージが必要な場合は、カスタムの 'LengthValidator'を指定し、必要条件を' 'として渡す必要があります。これは 'validate()'メソッドの中で 'UIComponent#getAttributes()'によって利用可能です。 'faces-config.xml'で定義したメッセージバンドルのベース名は、' Application#getMessageBundle() 'で利用可能な方法で、バリデータの内部で' ResourceBundle#getBundle() 'によってメッセージバンドルを取得できます。参照[この回答](http://stackoverflow.com/questions/3138271/jsf-how-can-i-get-the-msg-from-message-property-as-a-string-in-java-code/3140182#3140182)。 – BalusC