1

h:inputText複数のバリデータを持つ要素があります。例:

<h:inputText id="myId" value="#{some.value}">
    <f:validator validatorId="validatorOne/>
    <f:validator validatorId="validatorTwo/>
</h:inputText>
<h:message for="myId"/>

をスローするようにバリデーターを実装するValidatorExceptionと、2 番目のバリデーターも実行されなくなります。

しかし、両方の検証が失敗した場合に備えて、両方のバリデーターを実行し、両方のエラー メッセージを表示したいと考えています。

私はすでにこのように投げないValidatorExceptionようにしました:

    facesContext.addMessage(uiComponent.getClientId(), facesMessage);
    ((UIInput)uiComponent).setValid(false);

ただし、h:messageを使用すればエラー メッセージは表示されますが、両方のエラー メッセージは表示されませんh:messages

すべての検証エラー メッセージを表示するにはどうすればよいですか?

4

1 に答える 1

0

これが、JSF バリデーターが機能するように指定されている方法です。バリデーターは、コンポーネントで宣言された順序で起動され、そのうちの 1 つが失敗した場合、残りは起動されません。

何らかの不明確な理由で使用<h:messages>が実際にオプションではない場合 (おそらくfor、同じように機能する属性について知らなかったのでしょうか?)、最善の策は、別のバリデーターを作成して、両方のバリデーターに委任し、キャッチされたバリデーターをマージすることです。例外を 1 つに。

于 2012-10-15T12:17:38.220 に答える