I'm trying to use a primefaces selectManyCheckbox to display a list in my entity, but the values are never checked even though they are retrieved (as a persistentBag since I'm exposing my JPA entities to my JSF page).
My entity:
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<>();
}
My xhtml page:
<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>
My converter:
@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();
}
}
When I'm debuggin the "selectedTypeContainer" its metaDataItems, all the items are in there but the checkboxes aren't marked.
Primefaces 5.2