PrimeFaces数据表-过滤(运行示例时出现问题)



我在PrimeFaces中尝试这个例子。我只看懂前几行代码。

<p:dataTable var="car" value="#{tableBean.carsSmall}"
    emptyMessage="No cars found with given criteria">
     <f:facet name="header">
        <p:outputPanel>
            <h:outputText value="Search all fields:" />
            <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />
        </p:outputPanel>
    </f:facet>

它可以在这里显示一个搜索框。扩展代码行将用于添加列并向列中填充数据。我不明白什么

<p:column filterBy="#{car.model}" 
    headerText="Model" footerText="contains"
    filterMatchMode="contains">
    <h:outputText value="#{car.model}" />
</p:column>`

#{car.model}是什么?它没有指定任何东西,在java类中调用model。我如何改变我的java类使列显示?

表达式变量car声明为dataTable的var属性。这意味着dataTable组件中的每一行都可以通过变量car在表达式语言中引用。

carmodel属性是可序列化POJO Car的Bean属性。假定Car类有一个属性model,即getter getModel()和setter setModel()

<p:column>filterBy属性指定这个列标题将有它自己唯一的过滤文本字段,并且它将过滤car.model属性上的行。

属性filterMatchMode指定匹配标准是contains,这意味着输入到列过滤器字段中的任何文本出现都将等同于匹配的记录。关于filterMatchMode选项的完整列表,请参阅Primefaces指南。

private List<Car> carsSmall;

carsSmall是一个包含Car对象的列表。此处导入Car:

import org.primefaces.examples.domain.Car; 

Car.java来源

Car是后台bean,它有一个属性model,其中包含了作为String的汽车模型。

在car中#{car.model}在这里定义:

<p:dataTable var="car"...>

dataTable遍历列表carsSmall中的每个元素,您可以使用var属性中给出的名称(这里是:car)访问当前元素。因此,#{car.model}调用当前Car对象的getModel()方法。

最新更新