1

ファセットでこのスニペットを指定すると、次のようになります。

    <h:messages layout="table"></h:messages>
    <br /><br />
    First Name: 
    <h:inputText styleClass="inputText" id="firstName" validatorMessage="#{msg['error.userEdit.firstName']}">
        <f:validateRequired></f:validateRequired>
        <f:validateLength maximum="50"></f:validateLength>
        <f:validateRegex pattern="^[A-Za-z]+$"></f:validateRegex>
    </h:inputText>

フォームで検証を実行すると、フィールドで失敗した検証ルールの数に応じて、同じメッセージが0〜3個出力されます。フィールドごとに1つのメッセージに制限するにはどうすればよいですか?

わかりやすくするために、私のエラーメッセージはすべて3つのエラーを含み、「名は必須であり、50文字を超えることはできず、英字のみである必要があります。」と書かれているため、1回だけ印刷する必要があります。

4

2 に答える 2

0

<h:message>の代わりに使用してください<h:messages>。このように、最初のものだけが表示されます。

<h:message for="firstName" />

<h:message>はい、このアプローチでは、単一の入力フィールドではなく、個々の入力フィールドごとにを指定する必要があります<h:messages>。他に標準的な方法はありません。

于 2013-01-17T23:41:46.190 に答える
0

このフィールドを1つの正規表現で設定するだけでよいはずです。

あなたはこれを使う必要があります

< f:validateRegex pattern="[A-Za-z]{0,50}" >                         
于 2014-05-02T13:48:52.137 に答える