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

Leonardo Uribe commented on MYFACES-4109:
-----------------------------------------

I have been trying to fix this one, but it has been proved challenging.

The big problem is there is a part that says this:

"... Class-level bean validation must operate on a sufficiently populated bean 
instance. This differs from JSF field-level validation, which prevents beans 
from being populated with invalid values. To accomodate this difference, the 
candidate bean must be copied, populated with the already-validated candidate 
values, and then subjected to class-level validation ..."

The copy is not a problem. The problem is how to populate the candidate values. 
After reading the spec it was mentioned that f:validateBean should keep track 
of the "candidate values", which I guess it is better to store them in the view 
transient map. But the "bean population" or "update model" step is done in 
update model phase, usually through ValueExpression.setValue(...). The problem 
resides in we need to update only the relevant bean involved in 
f:validateWholeBean and keep all other objects intact, so there is a visitTree 
invocations to apply it in the proper context (remember datatable rows can be 
problematic). So I guess there is some manipulation in the ELResolver chain to 
do this. f:validateBean has some code that helps a bit (get ValueReference), 
but I still don't get the right combination. The documentation in the spec is 
clear, it is just I don't get how make this detail work in a consistent way. 
The rule is how to be sure only the content of the cloned object is updated 
without affect anything from the model (which should be updated in update model 
phase). Of course it could be done parsing each EL expression and applying only 
those with the same "reference", but that is seen as a "last resource" scenario.

> Implement f:validateWholeBean
> -----------------------------
>
>                 Key: MYFACES-4109
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4109
>             Project: MyFaces Core
>          Issue Type: New Feature
>          Components: JSR-372
>            Reporter: Leonardo Uribe
>            Assignee: Leonardo Uribe
>
> Implement f:validateWholeBean as described in the spec javadoc. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to