我正在使用当前的Primefaces 6.1,我得到了以下数据表:
<prime:column headerText="Status" filterBy="#{zoneAccSum.statusImage(zoneAccess.request.id)}"
filterMatchMode="equals">
<f:facet name="filter">
<prime:selectOneButton styleClass="theme-running" onchange="PF('data').filter()" >
<f:selectItems value="#{zoneAccSum.statusButtons}" />
</prime:selectOneButton>
</f:facet>
<prime:graphicImage value="#{zoneAccSum.statusImage(zoneAccess.request.id)}" />
</prime:column>
<prime:column headerText="Details" style="text-align:center; width:150px;">
<prime:commandButton value="Details" id="ajax" actionListener="#{zoneAccSum.redirect(zoneAccess.id)}" oncomplete="PF('requestModal').show()" update="SummaryFormZone:zone" />
</prime:column>
所以过滤效果很好,它向我展示了正确的结果。但是如果我在过滤后使用commandButton,我得到的传递值总是0.为了澄清我已经使我的Bean已经ViewScoped和Serialized,我的Button在Bean中设置了一个值,我的模态面板可以从中请求它的数据。
有谁知道,我怎么能一直修复0或者我如何建立一个变通方法?
答案 0 :(得分:0)
我今天尝试了几件事,并最终将自己弄清楚了。对于可能遇到此问题的其他人,我将在此处发布我的解决方案:
Primefaces在Managed Bean中需要一个额外的List来进行过滤。因此,在第一个数据表标记处,您需要添加以下内容:
<prime:dataTable var="zoneAccess" value="#{zoneAccSum.data}" widgetVar="data" rows="10" paginator="true" filteredValue="#{zoneAccSum.filteredData}">
filteredValue标记
在您的Managed Bean中,只需添加一个带有给定名称的新列表,在本例中为filteredData,Primefaces现在不再传递空值