我正在使用 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
}