f:selectItem里面的ui:repeat - 不起作用

问题描述 投票:1回答:1

我想遍历List并使每个元素成为一个复选框。我的代码是:

<h:outputText value="Choose" />
<p:selectManyCheckbox value="#{filterTypeBean.selectedFilterTypes}">
    <ui:repeat var="checkbox" value="#{filterTypeBean.listFilterTypes()}"
        varStatus="status">
        <!-- <h:outputText value="#{checkbox.filterTypeName}" /> -->
        <f:selectItem itemLabel="#{checkbox.filterTypeName}"
            itemValue="#{checkbox}" />
    </ui:repeat>
</p:selectManyCheckbox>

我的bean类包含:

private List<FilterType> selectedFilterTypes;

public List<TFilterType> getSelectedFilterTypes() {
        return selectedFilterTypes;
}

public void setSelectedFilterTypes(List<TFilterType> selectedFilterTypes) {
    this.selectedFilterTypes = selectedFilterTypes;
}

public List<FilterType> listFilterTypes() {
        EntityManager em = HibernateUtil.getEntityManager();
        Query q = em.createQuery("select u from FilterType u");
        List<FilterType> filterList = q.getResultList();
        for (FilterType filterType : filterList) {
            System.out.println(filterType.getFilterTypeName());
        }
        return filterList;
    }

我没有得到预期的结果 - filterList中没有复选框(我在屏幕上没有任何内容)。如果我取消注释用于打印过滤器类型名称的行 - >我得到了名称。请帮我解决这个问题。

jsf uirepeat selectmanycheckbox
1个回答
4
投票

你应该使用f:selectItems代替

<ui:repeat var="checkbox" value="#{filterTypeBean.listFilterTypes()}"
    varStatus="status">
    <!-- <h:outputText value="#{checkbox.filterTypeName}" /> -->
    <f:selectItem itemLabel="#{checkbox.filterTypeName}"
        itemValue="#{checkbox}" />
</ui:repeat>

通过类似的东西

<f:selectItems var="checkbox" value="#{filterTypeBean.listFilterTypes()}" itemLabel="#{checkbox.filterTypeName}" itemValue="#{checkbox}" />

但我不认为你的itemValue="#{checkbox}"会起作用,因为你的整个对象也包含了描述。

更多信息 :

© www.soinside.com 2019 - 2024. All rights reserved.