过滤后传递的值为0 - Primefaces

时间:2018-01-24 08:53:23

标签: javascript html jsf primefaces jsf-2

我正在使用当前的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或者我如何建立一个变通方法?

1 个答案:

答案 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现在不再传递空值