public VisitResult visit(VisitContext context, UIComponent target)
{
if (target instanceof EditableValueHolder)
{
EditableValueHolder evh = (EditableValueHolder) target;
final String clientId = target.getClientId(context.getFacesContext());
Map<String, Object> requestMap = context.getFacesContext()
.getExternalContext().getRequestMap();
if (_afterPhase)
{
// afterPhase - check for value changes
// submittedValue
_createFieldDebugInfosIfNecessary(SUBMITTED_VALUE_FIELD, clientId,
evh.getSubmittedValue(), requestMap, context.getFacesContext());
// localValue
final Object localValue = evh.getLocalValue();
_createFieldDebugInfosIfNecessary(LOCAL_VALUE_FIELD, clientId,
localValue, requestMap, context.getFacesContext());
// value
final Object value = _getRealValue(evh, target, localValue,
context.getFacesContext().getELContext());
_createFieldDebugInfosIfNecessary(VALUE_FIELD, clientId,
value, requestMap, context.getFacesContext());
}
else
{
// beforePhase - save the current value state
// submittedValue
requestMap.put(ErrorPageWriter.DEBUG_INFO_KEY + clientId
+ SUBMITTED_VALUE_FIELD, evh.getSubmittedValue());
// localValue
final Object localValue = evh.getLocalValue();
requestMap.put(ErrorPageWriter.DEBUG_INFO_KEY + clientId
+ LOCAL_VALUE_FIELD, localValue);
// value
final Object value = _getRealValue(evh, target, localValue,