我正在尝试这个例子in 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类以显示列?
答案 0 :(得分:4)
表达式变量car
被声明为dataTable的var
属性。这意味着dataTable组件中的每个唯一行都可以通过变量car
以表达式语言引用。
model
的{{1}}属性是Serializable POJO Car的Bean属性。假设Car类具有属性car
,意味着getter model
和setter getModel()
。
setModel()
的{{1}}属性指定此列标题将具有自己唯一的过滤器文本字段,并且它将过滤filterBy
属性上的行。
属性<p:column>
指定匹配条件为car.model
,这意味着列入过滤器字段的内容的任何文本出现都将等同为匹配记录。有关filterMatchMode选项的完整列表,请参阅Primefaces指南。
答案 1 :(得分:2)
private List<Car> carsSmall;
carsSmall是一个包含Car
个对象的列表。 Car
在此处导入:
import org.primefaces.examples.domain.Car;
Car是支持bean,它有一个属性model
,其中包含汽车的模型String
。
在汽车中#{car.model}
定义如下:
<p:dataTable var="car"...>
dataTable迭代列表carsSmall
中的每个元素,您可以使用var
属性中指定的名称(此处为car
)访问当前元素。因此,#{car.model}
会调用当前getModel()
对象的Car
方法。