【问题标题】:How to validate a List<Object> in a Primefaces dataTable - JSF如何验证 Primefaces 数据表中的 List<Object> - JSF
【发布时间】:2014-02-25 16:27:20
【问题描述】:

我有一个类似电话的数据表:

<p:dataTable value="#{billingInfoBean.billingProfile.payer.phones}" var="phone" id="payerPhoneTable">

    <p:column>
        <f:facet name="header">
            <h:outputText value="Type" />
        </f:facet>
        <p:selectOneMenu value="#{phone.type}">
            <f:selectItem itemLabel="" itemValue="" />
            <f:selectItems value="#{backOfficeLookupClient.allPhoneTypes}" />
        </p:selectOneMenu>
    </p:column>

    <p:column>
        <f:facet name="header">
            <h:outputText value="Area Code" />
        </f:facet>
        <h:inputText value="#{phone.areaCode}" size="3" maxlength="3" />
    </p:column>

    <p:column>
        <f:facet name="header">
            <h:outputText value="Exchange" />
        </f:facet>
        <h:inputText value="#{phone.exchange}" size="3" maxlength="3" />
    </p:column>

    <p:column>
        <f:facet name="header">
            <h:outputText value="Local" />
        </f:facet>
        <h:inputText value="#{phone.local}" size="4" maxlength="4" />
    </p:column>

    <p:column>
        <f:facet name="header">
            <h:outputText value="Extension" />
        </f:facet>
        <h:inputText value="#{phone.extension}" size="5" maxlength="5" />
    </p:column>
</p:dataTable>

我正在尝试使用对象电话进行自定义验证。我需要调用以这些列值作为输入的电话验证服务。在这种情况下我可以在这里使用&lt;f:validator&gt;吗?如果可以,如何?

【问题讨论】:

  • StarsSky 的半生不熟的答案被接受意味着您已经成功并完成了具体的功能需求。真的吗?这与 UIData 组件相结合,即不像 StarsSky 试图暗示的那样微不足道。除此之外,&lt;f:event&gt; 本质上是针对特定要求的丑陋黑客。有更清洁的方法。
  • @BaluC:所以,我还没有在 dataTable 上尝试过,但我已经在地址验证上尝试过,但是虽然我会使用 postValidate,但我仍然使用另一种方法,并且通过它是您的博客本身提供的解决方案之一的方式。很高兴听到主人本身的消息:),我很乐意听取您的建议! balusc.blogspot.com/2007/12/validator-for-multiple-fields.html。请告诉我一个更清洁的解决方案。谢谢!

标签: validation jsf primefaces datatable


【解决方案1】:

您可以将验证器侦听器附加到dataTable

<f:event type="postValidate" listener="#{bean.customValidation}"/>

并验证 bean 中的电话对象

public void customValidation(ComponentSystemEvent event) {
    ...
}

然后遍历所有 dataTable 子项并验证每个子项。

Here 这是一个很好的入门教程。

【讨论】:

    【解决方案2】:

    这个omnifaces标签解决了我的问题:

    http://showcase.omnifaces.org/validators/validateMultiple

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2013-01-24
      • 2013-02-06
      • 1970-01-01
      • 2012-11-22
      • 2017-06-23
      • 2013-11-25
      • 1970-01-01
      相关资源
      最近更新 更多