添加下拉列表框 - 问题初学者

时间:2011-08-04 21:49:09

标签: java jsf datatable primefaces selectonemenu

我已在此论坛和其他各种论坛中多次提出此问题,但仍无法在我的代码中实现此问题。

我是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列添加和填充值,我一无所知。

1 个答案:

答案 0 :(得分:1)

这来自PrimeFaces 2.2 Guide

的第131页上的示例
  

如果您想使用   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>,其中包含应该位于过滤器下拉列表中的所有值。

参考:Javadoc for SelectItem