【问题标题】:DataTable Filter using Prime Faces使用 Prime Faces 的 DataTable 过滤器
【发布时间】:2014-05-14 10:25:44
【问题描述】:

我是素人面孔的新手。我正在学习并尝试使用数据表开发一些示例代码。数据表正在呈现。当我尝试使用过滤器选项时,它不起作用。

如果有人可以帮助解决问题或提供使用过滤的数据表的简单示例,那就太好了。

我已经尝试过 primefaces.org 网站中给出的示例,但没有成功。此外,我不确定是否需要在后端编写任何代码来执行过滤,或者是否需要在 index.xhtml 文件中进行任何更改。

提前感谢您的帮助。

请在下面找到我正在尝试的示例代码...


index.xhtml -- 出于测试目的,我只使用了一列来显示。

<div xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">

<f:view>
<p:dataTable id="dataTable" var="car" value="#{carBean.cars}">

        <p:column id="modelColumn" filterBy="model" headerText="Model" footerText="contains" filterMatchMode="contains" >
            <h:outputText value="#{car.model}" />
        </p:column> 
 </p:dataTable>
 </f:view>
</div>

CarBean.java

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean(name = "carBean")
@SessionScoped
public class CarBean implements Serializable{
    private List<Car> cars = null;
    public List<Car> getCars() {
        return cars;
    }
    public void setCars(List<Car> cars) {
        this.cars = cars;
    }
    public CarBean()
    {
        cars = new ArrayList<Car>();
        cars.add(new Car("swift","2013","maruti","black"));
        cars.add(new Car("i20","2014","hyundai","grey"));
        cars.add(new Car("figo","2012","ford","red"));
    }
}

Car.java

import java.io.Serializable;

public class Car implements Serializable{
    private String model;
    private String year;
    private String manufacturer;
    private String color;
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public Car(String model, String year, String manufacturer, String color)
    {
             this.model = model;
             this.year = year; 
             this.manufacturer = manufacturer;
             this.color = color;
    }
}

【问题讨论】:

  • 看到我的回答了吗?

标签: jsf-2 primefaces


【解决方案1】:

如果你按照这个例子:

http://www.primefaces.org/showcase/ui/data/datatable/filter.xhtml

您需要数据表上的过滤值属性。它应该只指向带有 getter 和 setter 的 bean 上的 List。请勿填写此列表,PF 会在您背后执行此操作。

你也错过了 widgetVar 属性,但不确定这是做什么的。

【讨论】:

    【解决方案2】:

    更改列 filterby 选项,如使用 bean 引用变量

    filterBy="#{car.model}"
    

    【讨论】:

    • 使用 filterBy="model" 是完全可以接受的,如 primefaces 展示中所示,应该可以使用
    • 新陈列柜已更新以匹配新的 PF5 处理方式。不推荐使用 filterBy="model" 但仍然可以使用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2015-09-16
    • 1970-01-01
    • 2019-12-26
    • 2019-07-26
    相关资源
    最近更新 更多