p:未选中selectManyCheckbox值

时间:2016-05-27 15:33:06

标签: jsf primefaces

我试图使用一个primefaces selectManyCheckbox在我的实体中显示一个列表,但是即使它们被检索也不会检查这些值(作为一个persistentBag,因为我将我的JPA实体暴露给我的JSF页)。

我的实体:

public class TypeContainer {

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(
        name = "TYPE_CONT_META_DATA",
        joinColumns = @JoinColumn(name = "TYPE_CONT_ID", referencedColumnName = "ID"),
        inverseJoinColumns = @JoinColumn(name = "META_DATA_ID", referencedColumnName = "ID"))
    private List<MetaDataItem> metaDataItems = new ArrayList<>();

}

我的xhtml页面:

<p:selectManyCheckbox id="metaDataItems" value="#{adminBean.selectedTypeContainer.metaDataItems}"
                              layout="grid" columns="1" converter="metaDataItemConverter"
                              collectionType="java.util.ArrayList">
            <f:selectItems value="#{adminBean.allMetaDataItems()}"
                           var="metaDataItem"
                           itemLabel="#{metaDataItem.displayValue()}"
                           itemValue="#{metaDataItem}"/>
        </p:selectManyCheckbox>

我的转换器:

@FacesConverter("metaDataItemConverter")
public class MetaDataItemConverter implements Converter {

    @Inject
    private MetaDataItemRepository metaDataItemRepository;

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) {
        if (value == null || value.isEmpty()) {
            return null;
        }
        return metaDataItemRepository.find(MetaDataItem.class, Long.valueOf(value));

    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object object) {
        return ((MetaDataItem) object).getId().toString();
    }
}

当我调试&#34; selectedTypeContainer&#34;它的metaDataItems,所有项目都在那里,但复选框没有标记。

Primefaces 5.2

0 个答案:

没有答案