How to convert object in string
Hello
I have one problem. I want to use selectOneMenu, but error is
java.lang.ClassCastException. I use the converter, but something doesn't work good.
Here is code:
<tr:selectOneChoice label="#{messages.name}" required="true"
id="tRules" value="#{currentCategoryProperty.name}">
<f:selectItems value="#{textRules}" id="tr"/>
<f:converter converterId="elb.solutions.converter.object"/>
</tr:selectOneChoice>
textRules is List<Object>
And in config code is :
<converter>
<converter-id>elb.solutions.converter.object</converter-id>
<converter-class>
com.elb.solutions.converter.PersistableObjectConverter
</converter-class>
</converter>
____________________
PersistableObjectConverter.java
public class PersistableObjectConverter implements Converter, Validator {
public PersistableObjectConverter() {
}
public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException {
}
/**
*
*/
private static final long serialVersionUID = 3473830318225808710L;
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2)
throws ConverterException {
List<ExtendedSelectItem> list = (List)Contexts.getConversationContext().get(arg1.getId());
if (list == null) {
list = (List)Contexts.getSessionContext().get(arg1.getId());
}
Iterator<ExtendedSelectItem> itemIterator = list.iterator();
while (itemIterator.hasNext()) {
ExtendedSelectItem item = itemIterator.next();
if (item.getWrappedObject().toString().equals(arg2)) {
return item.getWrappedObject();
}
}
return null;
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2)
throws ConverterException {
return (arg2 == null) ? null : arg2.toString();
}
}
Am I doing something wrong?