code: @Override
      public void processDecodes(FacesContext context)
      {
          if (context == null)
          {
              throw new NullPointerException("context");
          }
          try
          {
              setCachedFacesContext(context);
              pushComponentToEL(context, this);
              if (!isRendered())
              {
                  return;
              }
          }
          finally
          {
              setCachedFacesContext(null);
              popComponentFromEL(context);
          }
          super.processDecodes(context);
          try
          {
              setCachedFacesContext(context);
              pushComponentToEL(context, this);
              if (isImmediate())
              {
                  //Pre validation event dispatch for component
                  context.getApplication().publishEvent(context,  PreValidateEvent.class, getClass(), this);
                  try
                  {
                      validate(context);
                  }
                  catch (RuntimeException e)
                  {
                      context.renderResponse();
                      throw e;
                  }
                  finally
                  {
                      context.getApplication().publishEvent(context,  PostValidateEvent.class, getClass(), this);
                  }
                  if (!isValid())
                  {
                      context.renderResponse();
                  }
              }
          }
          finally
          {
              setCachedFacesContext(null);
              popComponentFromEL(context);
          }
      }
docs: Set the "submitted value" of this component from the relevant data in the current servlet request object.
  <p>
  If this component is not rendered, then do nothing; no output would have been sent to the client so no input is
  expected.
  <p>
  Invoke the inherited functionality, which typically invokes the renderer associated with this component to
  extract and set this component's "submitted value".
  <p>
  If this component is marked "immediate", then immediately apply validation to the submitted value found. On
  error, call context method "renderResponse" which will force processing to leap to the "render
  response" phase as soon as the "decode" step has completed for all other components.