Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-2645

The view state is saved before encodeAll() is called on every UIViewParameter in an AJAX request

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0-beta-3
    • 2.0.0
    • JSR-314
    • None

    Description

      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

      Attachments

        1. MYFACES-2645-spec-proposal.patch
          6 kB
          Jakob Korherr

        Activity

          People

            jakobkorherr Jakob Korherr
            jakobkorherr Jakob Korherr
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: