code: public void processValidators(FacesContext context) {
  
          if (context == null) {
              throw new NullPointerException();
          }
          if (!isRendered()) {
              return;
          }
          pushComponentToEL(context, this);
          Application app = context.getApplication();
          app.publishEvent(context, PreValidateEvent.class, this);
          preValidate(context);
          iterate(context, PhaseId.PROCESS_VALIDATIONS);
          app.publishEvent(context, PostValidateEvent.class, this);
          popComponentFromEL(context);
  
      }
docs: <p>Override the default {@link UIComponentBase#processValidators}
  processing to perform the following steps.</p> <ul> <li>If the
  <code>rendered</code> property of this {@link UIComponent} is
  <code>false</code>, skip further processing.</li> <li>Set the current
  <code>rowIndex</code> to -1.</li> <li>Call the <code>processValidators()</code>
  method of all facets of this {@link UIData}, in the order determined by a
  call to <code>getFacets().keySet().iterator()</code>.</li> <li>Call the
  <code>processValidators()</code> method of all facets of the {@link
  UIColumn} children of this {@link UIData}.</li> <li>Iterate over the set
  of rows that were included when this component was rendered (i.e. those
  defined by the <code>first</code> and <code>rows</code> properties),
  performing the following processing for each row: <ul> <li>Set the
  current <code>rowIndex</code> to the appropriate value for this row.</li>
  <li>If <code>isRowAvailable()</code> returns <code>true</code>, iterate
  over the children components of each {@link UIColumn} child of this
  {@link UIData} component, calling the <code>processValidators()</code>
  method for each such child.</li> </ul></li> <li>Set the current
  <code>rowIndex</code> to -1.</li> </ul>
  
  @param context {@link FacesContext} for the current request
  
  @throws NullPointerException if <code>context</code> is <code>null</code>