I´m currently struggeling with the p:selectOneListbox.
It seems I get only the String value, because I got:
The class 'java.lang.String' does not have the property 'value'.
#{diagramElement.value.name} -> it seems get not the diagramElemen....
How can this be fixed? At the end I need the values from "DiagramElement" and grouped by the "SelectItemGroup"
Code: Select all
<p:selectOneListbox id="diagramElementList"
converter="diagramElementConverter"
var="diagramElement" filter="true" filterMatchMode="contains">
<f:selectItems
value="#{availableAutomationComponentControllerView.generateListAvailableElements()}"
var="diagramElement" itemLabel="#{diagramElement.value.name}"
itemValue="#{diagramElement}" />
<p:column style="width: 10px;">
<div align="center">
<h:outputText styleClass="#{diagramElement.value.icon} fa-2x" />
</div>
</p:column>
</p:selectOneListbox>
My backend bean:
Code: Select all
public List<SelectItemGroup> generateListAvailableElements() {
List<SelectItemGroup> list = new ArrayList<SelectItemGroup>();
SelectItemGroup g1 = new SelectItemGroup("Test1");
List<DiagramElement> workflowList = automationElementService.generateListAvailableElements(
loginBean.getCurrentEmployee(), localeBean.getLanguage(),
AutomationElementCategory.WORKFLOW.toString());
g1.setSelectItems(createItemList(workflowList));
list.add(g1);
return list;
return null;
}
private SelectItem[] createItemList(List<DiagramElement> list) {
List<SelectItem> newlist = new ArrayList<SelectItem>();
for (DiagramElement e : list) {
newlist.add(new SelectItem(e, e.getName()));
}
SelectItem[] arr = new SelectItem[newlist.size()];
arr = newlist.toArray(arr);
return arr;
}