[
https://issues.apache.org/jira/browse/MYFACES-3300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13100174#comment-13100174
]
Jakob Korherr commented on MYFACES-3300:
----------------------------------------
Hi Michi,
I found the bug. The problem originates from the new ContextAware exception
reporting system in MyFaces: In MethodExpressionValidator.validate() the
validator gets called in a try {} catch (ELException) {} block, and in the
catch block the caught ELException is checked if it was caused by a
ValidatorException. In MyFaces 2.1.1 (and before) this was true, b/c it was an
ELException which was caused by a ValidatorException. Now, due to the exception
reporting system, it is a ContextAwareELException which was caused by an
ELException which was caused by a ValidatorException. Thus the check fails and
the ValidatorException is not handled as a validation error, but as an
ELException, and thus the error.
Fortunately, in your case there is an easy fix, which I'd recommend anyway: use
immediate="true" on the h:selectBooleanCheckbox! This will move the
ValueChangeEvent to the end of phase 2 and thus the validator won't even be
called and the state will also not be lost, b/c the submitted values have
already been applied.
If you check your example again with MyFaces 2.1.1 (and before), you will see
that without immediate="true" on the h:selectBooleanCheckbox you will also see
the error there, however not on the browser via javascript alert, but in the
server log as unhandled FacesMessage (which was created by the properly handled
ValidationException), looking like this:
WARNUNG: There are some unhandled FacesMessages, this means not every
FacesMessage had a chance to be rendered.
These unhandled FacesMessages are:
- Kreditkartennummer muss aus 4 Ziffern bestehen.
Thanks a lot for reporting this! It tells us that the validation via the
validator="" attribute is totally broken in MyFaces 2.1.2. This is a
dealbreaker for the 2.1.3 release.
> Ajax behavior change from 2.1.1 to 2.1.2
> ----------------------------------------
>
> Key: MYFACES-3300
> URL: https://issues.apache.org/jira/browse/MYFACES-3300
> Project: MyFaces Core
> Issue Type: Bug
> Affects Versions: 2.1.2
> Reporter: Michael Kurz
> Assignee: Jakob Korherr
> Attachments: MYFACES-3300-test.zip
>
>
> I am currently trying to update some examples to Myfaces 2.1.2 and ran into
> some ajax related problems. I have a h:selectBooleanCheckbox component that
> collapses and expands two input fields via f:ajax. There is a value change
> listener for the checkbox that sets the value internally and calls
> renderResponse(). In f:ajax, those input fields are also listed in execute to
> preserve the input the user has potentially made. So far, I had no problems
> with this solution. The validation for the input fields did not kick in (or
> did not bother me) and the values were preserved.
> With 2.1.2 I have two issues:
> 1) Even if the input values are valid the values in the input fields vanish
> when they are expanded and collapsed again.
> 2) Now validation kicks in for invalid values and I get an error message in
> the browser
> This works with all older versions I tried (2.0.4, 2.1.0 and 2.1.1).
> Would be interesting to know what really changed here!
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira