使用Prime Faces的DataTable过滤器

时间:2014-05-14 10:25:44

标签: jsf-2 primefaces

我是新面孔。我正在学习并尝试使用数据表开发一些示例代码。数据表正在呈现。当我尝试使用过滤器选项时,它无法正常工作。

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

我已经尝试过在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;
    }
}

1 个答案:

答案 0 :(得分:0)

如果您遵循此示例:

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

您需要在数据表上使用filteredValue属性。它应该只指向带有getter和setter的bean上的List。不要填写这个列表,PF会在你背后做到这一点。

你也错过了widgetVar属性,但不确定它的作用。