1

我有一个h:inputText包含多个验证器的元素,例如:

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

现在,如果我实现我的验证器来抛出 a ValidatorException,第二个验证器将不会运行,即使它也会失败。

但我希望两个验证器都运行并显示两个错误消息,以防两个验证都失败。

我已经尝试过不要这样扔ValidatorException

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

但是h:message不会显示两条错误消息,尽管如果我使用h:messages.

如何显示所有验证错误消息?

4

1 回答 1

0

这就是指定 JSF 验证器的工作方式。验证器按照它们在组件上声明的顺序被触发,如果其中一个失败,那么剩余的将不会被触发。

如果<h:messages>由于某些不清楚的原因真的不能使用 using (也许您不知道它的for属性以相同的方式工作?),那么您最好的选择是创建另一个验证器,该验证器依次委托给两个验证器并合并捕获的验证器例外合二为一。

于 2012-10-15T12:17:38.220 回答