【问题标题】:filtering using dropdown list primefaces datatable使用下拉列表 primefaces 数据表过滤
【发布时间】:2014-11-14 15:20:35
【问题描述】:

jsf 2.0 primefaces 5.1 glassfish 4

我正在通过下拉列表使用过滤,当我单击列表中的某个项目时,数据表会被过滤,但下拉列表中的值仍显示“选择一个”而不是所选值

<p:column headerText="Region" filterBy="#{wan.Region}"
            filterMatchMode="contains" >
      <f:facet name="filter">
          <p:selectOneMenu onchange="PF('table').filter()">
                <f:selectItem itemLabel="Select One" itemValue="#{null}"
                              noSelectionOption="true" />
                <f:selectItems value="#{wandbBean.regions}" />
          </p:selectOneMenu>
      </f:facet>
      <h:outputText value="#{wan.Region}" />
</p:column>

【问题讨论】:

    标签: jsf primefaces datatable


    【解决方案1】:

    出现问题是因为您没有将value="#{wan.Region}" 设置为&lt;p:selectOneMenu onchange="PF('table').filter()"&gt;

    因此,确切的代码应该是

    <p:column headerText="Region" filterBy="#{wan.Region}"
                filterMatchMode="contains" >
          <f:facet name="filter">
              <p:selectOneMenu value="#{wan.Region}" onchange="PF('table').filter()">
                    <f:selectItem itemLabel="Select One" itemValue="#{null}"
                                  noSelectionOption="true" />
                    <f:selectItems value="#{wandbBean.regions}" />
              </p:selectOneMenu>
          </f:facet>
          <h:outputText value="#{wan.Region}" />
    </p:column>
    

    【讨论】:

    • 此答案不起作用,您将收到如下错误:javax.el.PropertyNotFoundException: .... YOUR_PAGE_PATH_AND_NAME value="#{wan.Region}": Target Unreachable, identifier [ wan] 解析为空。请看下面我的回答。
    • @ahmad:它可能不适用于您未指定的较新版本...如果您回答旧问题,请始终指定当前使用的版本
    【解决方案2】:

    您需要按如下方式更改您的代码:

    <p:column headerText="Region" filterBy="#{wan.Region}"
                filterMatchMode="contains" >
          <f:facet name="filter">
              <p:selectOneMenu onchange="PF('table').filter()">
                    <f:selectItem itemLabel="Select One" itemValue="#{null}"
                                  noSelectionOption="true" />
                    <f:selectItems value="#{wandbBean.regions}" 
                                   itemValue="#{wan.Region.VALUE}"
                                   itemLabel="#{wan.Region.LABEL}" />
              </p:selectOneMenu>
          </f:facet>
          <h:outputText value="#{wan.Region}" />
        </p:column>
    

    VALUE 是您想要传递给控制器​​的任何内容,而 LABEL 是您想要在下拉列表中显示的任何内容。 此解决方案适用于 PrimeFace 8.0 版,但我没有检查旧版本。

    【讨论】:

    • 缺少版本信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多