我在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
在表达式语言中引用。
car
的model
属性是可序列化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()
方法。