1

我已经在这个论坛和其他各种论坛中多次问过这个问题,但仍然无法在我的代码中实现它。

我正在做这个例子,我需要添加一个列表框(如列中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在程序中的列中添加和填充值一无所知。

4

1 回答 1

1

这来自PrimeFaces 2.2 指南第 131 页上的示例

如果您想使用下拉列表而不是输入文本来仅允许预定义的过滤器值,请使用 filterOptions 属性和选择项的集合/数组作为值。另外,filterMatchMode 定义了内置的匹配器,默认为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>包含应该在过滤器下拉列表中的所有值。

参考:SelectItem 的 Javadoc

于 2011-08-04T23:56:19.027 回答