拦截JSF验证

时间:2011-04-21 07:08:11

标签: validation jsf

我开始了解JSF并且我已经能够添加一些标准验证器,这些验证器显示在我已定义的消息中,但它们仅在我单击按钮提交表单时验证需要的组件我希望这些组件在我点击它们之外的时候已经过验证(例如用onblur),但是我不知道在onblur-property中调用哪个方法来执行验证器那个元素?我现在的代码是:

<h:form>
  <h:outputText value="#{msgs.name}"/><br/>
  <h:inputText id="name" value="#{user.name}" label="#{msgs.name}" required="true" requiredMessage="#{msgs.name_required}"/>
 <h:message for="name" styleClass="error_single_message"/>
  <br/><br/>

  <h:outputText value="#{msgs.password}"/><br/>
  <h:inputText id="password" value="#{user.password}" label="#{msgs.password}" required="true" requiredMessage="#{msgs.password_required}"/>
  <h:message for="password" styleClass="error_single_message"/>
  <br/><br/>

  <div class="error_overview_messages">Overview errors
  <h:messages showDetail="#{true}" showSummary="#{false}"/>
  </div><br/>

  <h:commandButton value="Log_on" action="logged_in"/>
</h:form>

2 个答案:

答案 0 :(得分:0)

JSF验证发生在服务器端,因此您基本上需要触发提交以激活服务器端代码。

如果您对此不感兴趣,则需要激活某些特定的Java脚本。

答案 1 :(得分:0)

如果您使用的是JSF2,您可以通过在构建中添加Richfaces并使用Richfaces客户端验证来完成您所需的工作:

Richfaces Client Side Validation

这是他们的v4版本中的一个很棒的新功能,它将标准的jsf验证器和JSR-303 bean验证编译为可以在客户端执行的javascript。您可以触发任何标准javascript事件的验证(模糊,点击,键盘)。