我使用的是primefaces3.5,我想使用selectCheckBoxMenu组件。实际上,我处理这个组件的很多属性,但是我有一个很大的列表,我愿意用lazy获取这个列表,而这个组件不包括lazy属性。因此,我决定使用自定义“filter=”和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 component.To。这样做,我使用filterMatchMode=“component.To”和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
}发布于 2015-12-21 05:28:21
代码不能工作的原因是filterFunction需要在bean中实现一个函数:nameOfYourCustomFunction(对象值、对象过滤器、区域设置)。例如,看看PrimeFaces "ContainsFilterConstraint.java“类是如何实现的。另外,请看我在这个问题中的回答,以便让您的selectCheckboxMenu过滤器真正工作:https://stackoverflow.com/a/34383835/4145964
https://stackoverflow.com/questions/18273019
复制相似问题