Possible Duplicate:
Primefaces selectOneMenu listener not called with Objects other than Strings
I am creating List
of SelectItem
as:
List<SelectItem> activityGlobalTypes = new ArrayList<SelectItem>();
for (ActivityTypeXMLModel activityTypeXMLModel : filteredActivityTypeXMLModels) {
activityGlobalTypes.add(new SelectItem(activityTypeXMLModel, activityTypeXMLModel.getParent()));
}
This is the dropdown menu:
<p:selectOneMenu id="activityGlobalMenu" value="#{adminController.activityDTO.activityParentName}" required="true">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.activityGlobalTypes}" />
<p:ajax listener="#{adminController.updateDependentActivity}" />
</p:selectOneMenu>
Now from the method updateDependentActivity
public void updateDependentActivity(AjaxBehaviorEvent event) {
SelectOneMenu menu = (SelectOneMenu) event.getComponent();
System.out.println(menu.getValue());//it prints com.edfx.adb.xml.model.ActivityTypeXMLModel@7b6fe3c4
if(menu.getValue() instanceof ActivityTypeXMLModel) {
System.out.println("value is ActivityTypeXMLModel"); // I was expecting this one
} else if(menu.getValue() instanceof String) {
System.out.println("value is String"); //this line is executing
} else {
System.out.println("unknown");
}
}
I have checked the source code of SelectItem
and it is storing value in object form. Any pointer would be very helpful.