【问题标题】:Trigger OmniFaces multi field validation after focus lost失去焦点后触发 OmniFaces 多字段验证
【发布时间】:2013-06-19 20:25:17
【问题描述】:

我需要在日历组件上创建验证 - 开始/结束。 OmniFaces 非常支持多字段验证,比如这里:

<h:panelGrid columns="3">

    <h:outputLabel for="startDate" value="Start date" />
    <h:inputText id="startDate" value"#{booking.reservation.startDate}" required="true"
        requiredMessage="Please enter start date"
        converterMessage="Please enter format yyyy-MM-dd">
        <f:convertDateTime pattern="yyyy-MM-dd" />
    </h:inputText>
    <h:message for="startDate" />

    <h:outputLabel for="endDate" value="End date" />
    <h:inputText id="endDate" value"#{booking.reservation.endDate}" required="true"
        requiredMessage="Please enter end date"
        converterMessage="Please enter format yyyy-MM-dd">
        <f:convertDateTime pattern="yyyy-MM-dd" />
    </h:inputText>
    <h:panelGroup>
        <h:message for="endDate" />
        <h:message for="order" />
        <o:validateOrder id="order" components="startDate endDate" 
            message="End date must be after start date" />
    </h:panelGroup>

</h:panelGrid>

<h:commandButton value="submit" action="#{booking.submit}">
    <f:ajax execute="@form" render="@form" />
</h:commandButton>

但是,在此示例中,验证是在手动提交后触发的。我需要在(日历的)焦点丢失后进行验证。我怎样才能做到这一点?谢谢。

【问题讨论】:

    标签: ajax validation jsf jsf-2 omnifaces


    【解决方案1】:

    来自 OmniFaces 的多字段验证器可以在 &lt;f:ajax execute&gt; 中引用。 “焦点丢失”事件是blur 事件。因此,应该这样做:

    <h:inputText ...>
        <f:ajax event="blur" execute="startDate endDate order" render="m_startDate m_endDate m_order" />
    </h:inputText>
    

    其中m_startDate 等是&lt;h:message&gt; 组件的ID,就像这样

    <h:message id="m_startDate" for="startDate" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 2011-10-13
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多