Details
Description
UIViewRoot:
try
catch (AbortProcessingException e)
{
ExceptionQueuedEventContext exceptionContext
= new ExceptionQueuedEventContext(context, e, source, context.getCurrentPhaseId());
context.getApplication().publishEvent(context, ExceptionQueuedEvent.class, exceptionContext);
// Abortion
return false;
}
Problem 1:
<h:inputText valueChangeListener="#
">
MethodExpressionValueChangeListener wraps all exceptions to AbortProcessingException and therefore exception is queued
Problem 2:
<h:inputText >
<f:valueChangeListener binding="#
" />
</h:inputText>
ValueChangeListenerHandler does not wrap exception to AbortProcessingException and therefore exception is not queued in this block (but it is queued from phase executor but without component info)
Problem 3: JSF spec 2.1 :
"Clarification made: throwing an AbortProcessingException tells an implementation that no further broadcast of the
current event occurs. Does not affect future events."
But I think that code in UIViewRoot makes opposite: // Abortion return false;
Attachments
Attachments
Issue Links
- is depended upon by
-
MYFACES-3301 ValidatorExceptions are not properly handled in MethodExpressionValidator.validate()
- Closed