ListShuttle Ignores Converted Values
pdpantages Mar 14, 2008 6:22 PMHello Forum,
I am trying to use a list shuttle with a covnerter.
I have an ArrayList for both my source and target lists.
The list items are String.
E.g., one entry is: "specificProblem"
I wanted to present different string values in the picklists.
E.g., I want to show "Specific problem"
I thought that I could define a converter to map the
strings back and forth. Since my "objects" are also strings
I thought this would be fairly straightforward.
I can see from println statements that the converter is
being called to convert the source and target lists as
expected.
When the page is rendered, I see calls togetAsString,
E.g., I see:
"getAs String from specificProblem to Specific problem"
When it is submitted I see calls to getAsObject.
E.g., I see:
"getAsObject from Specific problem to specificProblem"
However, when the shuttle is displayed, I see the original values,
not the converted values. E.g., in this case I see
"specificProblem" in the list, not "Specific problem" as I want.
Am I misunderstaning something?
The shuttle seems to discard the converted values & display "object"
values instead.
My Shuttle:
<rich:listShuttle
sourceValue="#{reportEntry.adp}"
targetValue="#{reportEntry.dp}"
var="items"
sourceCaptionLabel="Available Properties"
targetCaptionLabel="Included Properties"
removeAllControlLabel="Remove all"
removeControlLabel="Remove properties"
copyControlLabel="Add properties"
copyAllControlLabel="Add all"
fastOrderControlsVisible="true"
orderControlsVisible="true"
converter="#{reportEntry.pc}">
<rich:column>
<h:outputText value="#{items}"></h:outputText>
</rich:column>
</rich:listShuttle>
My converter:
public Object getAsObject(FacesContext context, UIComponent component, String value)
throws ConverterException {
System.out.println("getAsObject from " + value + " to " + _nameMap.get( (String)value ) );
return ( StringUtils.isEmpty(value) ) ? null : _nameMap.get( (String)value );
}
public String getAsString(FacesContext context, UIComponent component, Object value)
throws ConverterException {
if(value == null) {
return "";
}
else if ( value instanceof String )
{
System.out.println("getAs String from " + value + " to " + nameMap.get( (String) value ) );
return nameMap.get( (String) value );
}
{
throw new ConverterException("Property Name not string value." );
}
}