You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Michael Kurz (JIRA)" <de...@myfaces.apache.org> on 2010/02/02 16:18:20 UTC

[jira] Commented: (MYFACES-2528) BeanValidator validation groups are overwritten with PSS

    [ https://issues.apache.org/jira/browse/MYFACES-2528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12828640#action_12828640 ] 

Michael Kurz commented on MYFACES-2528:
---------------------------------------

I did some further investigation on this one and set javax.faces.FULL_STATE_SAVING_VIEW_IDS to have full state saving for this view. Interestingly enough, it is not working too. I expected, that this would solve the issue. But the validator is not refreshed on building the view in render response. The validation group is always determined by the one in the state (and thus the one set on the first request).

This leads to an interesting behavior: If the select box is checked on the initial request to this page the validator works as expected. Also when I check and uncheck the checkbox. So I guess in this case the validation group is always the same in the state but the validation still behaves correctly because the rendered attribute changes. If the checkbox is not checked on the initial request the validator does not work (validation group is always the default one).

I noticed the same behavior in Mojarra 2.0.1.

Is this the expected behavior?

> BeanValidator validation groups are overwritten with PSS
> --------------------------------------------------------
>
>                 Key: MYFACES-2528
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2528
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.0-beta
>            Reporter: Michael Kurz
>         Attachments: MYFACES-2528.patch
>
>
> Setting the validation groups of a bean validator like <f:validateBean validationGroups="#{bean.groups}"/> is not always working correctly with PSS. Property bean.groups returns null or the class name of a validation group in my example based on the value of a boolean checkbox:
> <h:selectBooleanCheckbox value="#{bean.prop1}"
>     valueChangeListener="#{bean.prop1Changed}"
>     immediate="true" onclick="this.form.submit()"/>
> <h:inputText value="#{bean.prop2}" rendered="#{bean.prop1}">
>   <f:validateBean validationGroups="#{bean.groups}"/>
> </h:inputText>
> If I check the boolean checkbox the form is submitted and rendered again with the additional input field. The problem now is that the validation groups are set correctly on building the view during the second traversal of the lifecycle before restoring the state. But on restoring the validator this value is overwritten with the old value from the state and my validation group is gone again.
> As the BeanValidator is a PartialStateHolder this can be avoided by only saving and restoring the state if the initial state was not marked.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.