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

Leonardo Uribe commented on MYFACES-2645:
-----------------------------------------

I don't believe that call encodeAll() on PartialViewContextImpl could be a good 
solution. My question is does this works?

<h:commandButton value="ajax-button">
<f:ajax render="input output messages" execute="@this" />
</h:commandButton>

At first view, there is something wrong with UIViewParameter. Why this method 
calls setSubmittedValue(getStringValue(context))? Doesn't that supposed to be 
called on update model phase? If a view contains view parameter, it should be 
executed the whole lifecycle, right? That code should work:

<h:commandButton value="ajax-button">
<f:ajax render="output messages" execute="input @this" />
</h:commandButton>

I think the solution should be done different, so I suggest the code committed 
should be reverted first.



> The view state is saved before encodeAll() is called on every UIViewParameter 
> in an AJAX request
> ------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-2645
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2645
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.0-beta-3
>            Reporter: Jakob Korherr
>            Assignee: Jakob Korherr
>         Attachments: MYFACES-2645-spec-proposal.patch
>
>
> UIViewParameter calls setSubmittedValue() in encodeAll() to store the current 
> value of the view parameter in the state as the submitted value (this helps 
> UIViewParameter to restore its value on a postback). 
> UIViewParameter.encodeAll() itself is called by UIViewRoot.encodeEnd() for 
> every UIViewParameter in the view.
> If the current request is an ajax-request, the view state is currently 
> already generated in UIViewRoot.encodeChildren() (before 
> UIViewRoot.encodeEnd()). At this time the submitted value for every 
> UIViewParameter is null, because its encodeAll()-method was not called yet.
> Later, when UIViewRoot.encodeEnd() is called, UIViewParameter.encodeAll() is 
> called and it sets the submitted value correctly, but due to the fact that 
> the state has already been generated, these changes are dropped.
> This causes the value of every UIViewParameter to be set to null in the next 
> request, which will most likely end in validation problems with the required 
> validator.
> The related thread to this issue from the mailing list can be found at: 
> http://www.junlu.com/list/43/611590.html

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

Reply via email to