如何使用
Enum
过滤p:dataTable
?
我的方法如下:
<p:column filterBy="#{item.EMyEnum}" filterMatchMode="in" >
<f:facet name="filter">
<p:selectCheckboxMenu label="Select" onchange="PF('datatable').filter()">
<f:selectItems value="#{MyEnum.values()}" />
<p:ajax event="toggleSelect" onsuccess="PF('datatable').filter()"/>
</p:selectCheckboxMenu>
</f:facet>
<h:outputText value="#{item.EMyEnum}"/>
</p:column>
一切看起来都不错,但是当我从下拉列表中选择一个项目时,整个内容都会被过滤掉。当我取消选择下拉菜单中的所有内容时,内容会再次出现,所以基本上过滤器似乎有效,但每次比较都会被评估为false。我不明白为什么,因为JSF内置的Enum转换器还没有?但是我在这里错过了什么或做错了什么?
我在Mojarra 2.1.29上使用PF 5.1
我使用List
种Enum
类型与OmniFaces GenericEnumConverter
结合使用,解决了我的问题。这就像魅力一样,但我仍然想知道以前解决方案的确切问题是什么以及如何修复它。