【问题标题】:Primefaces filter using selectOneButton weird behaviourPrimefaces 过滤器使用 selectOneButton 奇怪的行为
【发布时间】:2014-09-11 16:10:17
【问题描述】:

我有一个包含性别列的数据表。

我想根据性别过滤数据表中的记录。

这是我的那部分代码。

奇怪的是我的性别栏会一直显示女性,即使我点击了全部和男性按钮。知道为什么吗?

  <p:column filterBy="#{staff.gender}" sortBy="#{staff.gender}" headerText="Gender" filterMatchMode="equals">
                            <f:facet name="filter">
                                <p:selectOneButton onchange="PF('staffTable').filter()">
                                    <f:converter converterId="javax.faces.Boolean" />
                                    <f:selectItem itemLabel="All" itemValue="" />
                                    <f:selectItem itemLabel="Male" itemValue="true" />
                                    <f:selectItem itemLabel="Female" itemValue="false" />
                                </p:selectOneButton>
                            </f:facet>
                          <h:outputText value="#{staff.gender ? 'Male': 'Female'}" />
                        </p:column>

【问题讨论】:

  • 根据我的经验 p:启用排序的列过滤器内的组件在触发排序事件时总是有副作用。

标签: jsf primefaces jsf-2.2 selectonemenu


【解决方案1】:

将列 filterMatchMode 属性值更改为精确将解决问题:

filterMatchMode="exact"

【讨论】:

    【解决方案2】:

    将filteredValue添加到table组件中,它在backingbean中保留一个过滤值列表,如下所示:

    <p:dataTable value="#{yourBean.listOfValues}" var="value" filteredValue="#{yourBean.listOfFilteredValues}">
    

    在 bean 中当然是这样的:

    private List<Object> listOfValues;
    private List<Object> listOfFilteredValues;
    
    public List<Object> getListOfValues() {
            return listOfValues;
    }
    public List<Object> getListOfFilteredValues() {
            return listOfFilteredValues;
        }
    

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多