Richfaces rich:验证器在客户端验证期间未标记UIInput无效

时间:2012-08-06 21:17:01

标签: jsf-2 richfaces

我在inputText上使用rich:validator进行JSR-303验证,如下所示:

<h:outputLabel value="#{msgs['label.email']}:"/>
            <h:inputText value="#{loginBean.email}" id="email" size="50" validatorMessage="Invalid email address." styleClass="#{component.valid ? '' : 'invalid'}">
                <rich:validator />
            </h:inputText>
            <rich:message for="email" />

当验证失败时,inputText的类应该更改为invalid,这会导致组件周围出现红色边框,而rich:message应该显示Invalid email address消息。如果我输入无效的电子邮件地址并将鼠标光标移到inputText之外,则只会显示Invalid email address消息; UIInput不会切换到invalid类,因此组件周围不会出现红色边框。但是,如果我单击“提交”按钮并使用无效的电子邮件地址提交表单,则在重新加载页面时,inputText框的类会发生更改,我会同时获得红色边框组件以及错误消息。为什么会这样? JSR-303是否要求客户端验证与提交表单的工作方式相同?

修改

我在inputText中添加了以下内容,它解决了在inputText上更改类的问题:

 <a4j:ajax event="blur" render="email"/>

然而,这引入了一个新问题。现在,错误消息不是“粘性的”。换句话说,当输入无效的电子邮件时,inputText上会出现红色轮廓,并且会出现错误消息,但是如果我在另一个组件上输入了无效的输入,并且它的类更改为“invalid”,则会显示其错误消息,“电子邮件”上的错误消息消失。 inputText类更改现在正常工作,但消息是易失性的,如果另一个组件的条目无效,它们就会消失。

0 个答案:

没有答案