[ http://issues.apache.org/jira/browse/MYFACES-277?page=all ]
     
Mathias Broekelmann closed MYFACES-277:
---------------------------------------

    Fix Version: Nightly Build
     Resolution: Fixed

It`s fixed in the next nightly.

Since UIInput is a critical component I will summarize the reasons of the fix:

Preconditions:
1. one or more input elements on the page.
2. command element with immediate=true on the page.
3. Modify value of a input element.
4. Press command button with the immediate=true which renders the same page.
5. the submitted values are rendered again. But expected behavior would be to 
render the current (and maybe changed) values bound via the value property of 
the input components.

Problem:
The processValidator phase is not called since immediate is true for the 
command.
The submitted value is only reset to null in the processValidator phase of the 
input component.
RendererUtil.getStringValue(...) evaluates the submitted value which is not 
null and uses this value to render the response.

Solution:
I´ve added a "mark" into UIInput to know if the processValidator phase was 
called. That "mark" is evalutated in the encodeBegin method and the submitted 
value will be set to null if validation was not done.

> using a button with immediate on a form with a dataTable component
> ------------------------------------------------------------------
>
>          Key: MYFACES-277
>          URL: http://issues.apache.org/jira/browse/MYFACES-277
>      Project: MyFaces
>         Type: Bug
>     Reporter: Tamietto Claudio
>      Fix For: Nightly Build

>
> i'm using a form that contain a dataTable component . There is also a button 
> that modify the model of the table with
> an array of only one element with the single fields initialized to "" (String 
> fields) and has the attribute immediate set
> to true. When the form is rendered after i have pressed the button with the 
> immediate attribute set  to true ,the value that i obtain is the value 
> submitted and not the value of the model.
> I have found the following workaround that i have put on a properties of the 
> row of the table that is called on the rendering phase:
> if (component.getSubmittedValue() != null &&
>     arrayOfRecord[model.getRowIndex()].getCodice() != null &&
>     
> !component.getSubmittedValue().equals(arrayOfRecord[model.getRowIndex()].getCodice()))
>  {
>       
> component.setSubmittedValue(arrayOfRecord[model.getRowIndex()].getCodice());
> }
> I have used the value of the model  and not the component.getValue() because 
> also this was not the same
> of the value of te model.
> I can try to create a simple case if it is necessary o the problem is not 
> clear.
> The problem seems the same of the issue 187  (that it is closed) but i i have 
> tested the night builds and nothing
> changed. However in the release notes of the night builds the issue is not 
> reported as solved.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to