【问题标题】:Primefaces selectCheckBoxMenu filter="custom" property doesn't workPrimefaces selectCheckBoxMenu filter="custom" 属性不起作用
【发布时间】:2013-08-16 12:08:58
【问题描述】:

我正在使用 primefaces 3.5,并且我想使用 selectCheckBoxMenu 组件。实际上,我处理了这个组件的很多属性,但是我有很大的列表,我愿意用惰性获取这个列表,这个组件不包含惰性属性。因此,我决定使用 filter="custom" 和 filterFunction 属性来过滤我的列表。

这是我的代码:

<p:selectCheckboxMenu id="personelListesiCheckBoxId"
                                      value="#{gidenKutusuController.secilenKullaniciListesi}"
                                      converter="#{personelConverter}"
                                      label="#{gidenKutusuController.personelLabel}"
                                      filter="true"
                                      filterMatchMode="custom"
                                      filterFunction="customFilter"
                                      panelStyle="width:220px">
                    <p:ajax event="toggleSelect" process="@this"
                            onstart="personelGetir();"/>
                    <p:ajax event="change"
                            process="@this"
                            listener="#{gidenKutusuController.listenerPersonelSecildi()}"
                            update="@this"/>
                    <f:selectItems value="#{gidenKutusuController.personelListesi}" var="personel"
                                   itemLabel="#{personel.adi} #{personel.soyadi}"
                                   itemValue="#{personel}"/>
                </p:selectCheckboxMenu>
                <p:remoteCommand process="@this"
                                 action="#{gidenKutusuController.listenerPersonelSecildi()}"
                                 name="personelGetir"
                                 update=":form:personelListesiCheckBoxId"/>
                <p:remoteCommand process="@this"
                                 action="#{gidenKutusuController.listenerPersonelListesiLazyGetirByFilter()}"
                                 name="personelListesiniGetirByFilter"
                                 update="@this"/>

还有这个java脚本代码:

<script type="text/javascript">
    function customFilter(itemLabel, filterValue) {
        personelListesiniGetirByFilter({fv: filterValue});
    }
</script>

我想在用户输入过滤器时执行此操作,我获取该值并使用该值查询数据库并获取列表并将列表设置为 selectCheckBoxMenu 组件。要做到这一点, 我使用 filterMatchMode="custom" 和 filterFunction="customFilter" 来获取键入的值,然后通常当用户键入时,必须调用 customFilter java 脚本函数,它不起作用。

我不知道如何解决这个问题。请帮帮我。

这里是 primefaces 3.5 指南

<p:selectCheckboxMenu value="#{bean.selectedOptions}" label="Movies"
             filterMatchMode="custom" filterFunction="customFilter">
             <f:selectItems value="#{bean.options}" />
</p:selectCheckboxMenu>


function customFilter(itemLabel, filterValue) {
     //return true to accept and false to reject
}

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    您的代码不起作用的原因是 filterFunction 需要在您的 bean 中实现一个函数:nameOfYourCustomFunction(Object value, Object filter, Locale locale)。例如,看一下 PrimeFaces "ContainsFilterConstraint.java" 类是如何实现的。另外,请查看我在此问题中的回答,以使您的 selectCheckboxMenu 过滤器真正起作用: https://stackoverflow.com/a/34383835/4145964

    【讨论】:

      猜你喜欢
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      相关资源
      最近更新 更多