我已经在这个和其他各种论坛上问过这个问题好几次了,但仍然无法在我的代码中实现它。
我正在做这个例子,我需要添加一个列表框(如在列MANUFACTURE
)。我无法显示列表框或填充它的值从我的Java类。
我的java代码如下;
private List<Hotel> listHotel;
public List<Hotel> ListAllHotels() {
return dml.displayAllHotels(); //dml.displayAllHotels() returns a List<Hotel>
}
通常我创建一个列表框,并使用以下JFS代码填充它的值;
<h:selectOneMenu value="#{HotelDataForm.stationedHotel}" id="globalFilter" onchange="carsTable.filter()" >
<f:selectItems value="#{HotelDataForm.ListAllHotels}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" />
<h:outputText value="#{carsTable[1]}" />
</h:selectOneMenu>
这是有效的,但我无法将此代码添加到我发布的链接中的Manufacturer
列。在这个例子中,他们使用SelectItem[]
对象来填充列表框。我不知道如何在我的程序中添加和填充manufacturer
列的值。
摘自PrimeFaces 2.2指南第131页的示例
如果你想使用下拉,而不是输入文本,只允许预定义的过滤器值使用filterOptions属性并将selectitems的集合/数组作为值。此外,filterMatchMode定义了内置的matcher,默认为startsWith。下面是一个高级过滤数据表选项了。
<p:column
filterBy="#{car.manufacturer}"
headerText="Manufacturer"
filterOptions="#{carBean.manufacturerOptions}"
filterMatchMode="exact">
<h:outputText value="#{car.manufacturer}" />
</p:column>
所以在这个例子中,carBean
应该有一个方法getManufacturerOptions()
,它返回SelectItem[]
或List<SelectItem>
,其中包含过滤器下拉列表中应该包含的所有值。
REFERENCE: Javadoc for SelectItem