4

私の質問は、基本的にBeanValidationのカスタム検証メッセージと同じ です。しかし、私は問題を解決することはできません。

Beanクラス:

public class PersonalInfoBean {
    @Size(min=5, max=55, message="{invalid_name}")
    String name;
    ...
}

EclipseプロジェクトのsrcフォルダーにあるパッケージにMessages.propertiesを作成しました。

invalid_name=Please enter a valid name

ファイルをfaces-config.xmlに登録しました:

<application>
    <message-bundle>com.webage.survey.Messages</message-bundle>
</application>

ファセットファイルには次のものがあります。

<h:inputText value="#{personalInfo.name}" id="name"/> <h:message for="name" style="color: red" /><br/>

フォームを送信すると、エラーメッセージとして{invalid_name}のみが表示され、「有効な名前を入力してください」は表示されません。

これをJBoss6とWebSphere8でテストしたところ、同じ結果になりました。

4

1 に答える 1

4

JSR 303 Bean Validation フレームワークと JSF 組み込みの検証を混在させています。JSR 303 Bean Validation フレームワークは、JSF フレームワークの一部ではありません。これは完全にスタンドアロンの検証フレームワークであり、JSF はたまたま統合をサポートしています。

JSR 303 Bean Validation メッセージは、ファイルでローカライズできる正確なファイル名ではなく、別のプロパティ ファイルで指定する必要があります。これらのファイルは、クラスパスのルートに配置する必要があります。ValidationMessages.propertiesValidationMessages_xx_XX.properties

に登録する必要はありませんfaces-config.xml。は、、、 など<message-bundle>の JSF 組み込みコンバーターおよびバリデーターにのみ使用されます。required="true"<f:validateRegex><f:convertDateTime>

于 2012-04-27T19:52:19.643 に答える