我已在此论坛和其他各种论坛中多次提出此问题,但仍无法在我的代码中实现此问题。
我是doing this example,我需要添加一个列表框(如列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
列添加和填充值,我一无所知。
答案 0 :(得分:1)
如果您想使用 dropdown而不是inputtext只允许预定义的过滤器值使用filterOptions属性 以及选择项的集合/数组作为值。另外,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>
,其中包含应该位于过滤器下拉列表中的所有值。