in myfaces-html5-core/src/main/java/org/apache/myfaces/html5/renderkit/util/RendererUtils.java [196:271]
public static String getStringValue(FacesContext facesContext,
UIComponent component)
{
try
{
if (!(component instanceof ValueHolder))
{
throw new IllegalArgumentException("Component : " + DebugUtils.getPathToComponent(component)+"is not a ValueHolder");
}
if (component instanceof EditableValueHolder)
{
Object submittedValue = ((EditableValueHolder)component).getSubmittedValue();
if (submittedValue != null)
{
if (log.isLoggable(Level.FINE)) log.fine("returning 1 '" + submittedValue + "'");
return submittedValue.toString();
}
}
Object value;
if(component instanceof EditableValueHolder) {
EditableValueHolder holder = (EditableValueHolder) component;
if(holder.isLocalValueSet()) {
value = holder.getLocalValue();
} else {
value = getValue(component);
}
}
else {
value = getValue(component);
}
Converter converter = ((ValueHolder)component).getConverter();
if (converter == null && value != null)
{
try
{
converter = facesContext.getApplication().createConverter(value.getClass());
if (log.isLoggable(Level.FINE)) log.fine("the created converter is " + converter);
}
catch (FacesException e)
{
log.log(Level.SEVERE, "No converter for class " + value.getClass().getName() + " found (component id=" + component.getId() + ").", e);
// converter stays null
}
}
if (converter == null)
{
if (value == null)
{
if (log.isLoggable(Level.FINE)) log.fine("returning an empty string");
return "";
}
if (log.isLoggable(Level.FINE)) log.fine("returning an .toString");
return value.toString();
}
if (log.isLoggable(Level.FINE)) log.fine("returning converter get as string " + converter);
return converter.getAsString(facesContext, component, value);
}
catch(PropertyNotFoundException ex)
{
log.log(Level.SEVERE, "Property not found - called by component : "+DebugUtils.getPathToComponent(component),ex);
throw ex;
}
}