I am using a Richfaces' picklist and I want to populate the right-side panel with a list of SelectItems from my backing bean.
Populating the left-side is not a problem from the backing bean, however, the right hand side is problematic.
This is what I currently have
<h:outputText value="Roles" />
<rich:pickList showButtonsLabel="false">
<f:selectItems value="#{Bean.allRoles}" />
</rich:pickList>
EDIT:
So I have roles 'a', 'b', 'c', and 'd'.
The user has roles 'a' and 'd', so 'a' and 'd' should be on the right-side panel and 'b' and 'c' should be on the left-side panel.
EDIT:
Further explanation.
I have three lists for the user.
All lists have the data type ArrayList<SelectItem>
.
I need the capability to move individual roles between list number 1 and list number 2 and then save the new set of roles. I thought the picklist would be the best richfaces object for the job.
It seems that I found the solution.
<rich:pickList value="#{aBean.rightSideValues}">
<f:selectItems value="#{aBean.leftSideValues}"/>
</rich:pickList>
"#{aBean.rightSideValues}"
should point to the list or array of
objects. With these values right side
of the pick list will be populated.
#{aBean.leftSideValues}
should point to the list of the SelectItem
object.
ONE NOTICE -- SelectItem object MUST BE constructed with objects from the "#{aBean.rightSideValues}"
.
Example.
class ABean{
...
List<SomeObject> getRightSideValues(){
...
}
List<SelectItem> getLeftSideValues(){
List<SomeObjects> someObjects = getAllAvailableObjects();
List<SelectItem> sItems = new ArrayList<SelectItem>();
for(SomeObject sObj : someObjects){
SelectItem sItem = new SelectItem(sObj, sObj.toString());
sItems.add(sItem);
}
return sItems;
}
Notice that SelectItem takes first argument and this argument is the reference to the SomeObject. In the internals rich faces will compare objects from the "#{aBean.rightSideValues}"
with objects from the
#{aBean.leftSideValues}
with help of the method
SomeObject.equals()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With