@Override
    public void processDecodes(FacesContext context) {

        if (context == null) {
            throw new NullPointerException();
        }
        if (!isRendered()) {
            return;
        }

        pushComponentToEL(context, this);
        preDecode(context);
        iterate(context, PhaseId.APPLY_REQUEST_VALUES);
        decode(context);
        popComponentFromEL(context);

    }
<p>Override the default {@link UIComponentBase#processDecodes} 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>processDecodes()</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>processDecodes()</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>processDecodes()</code>
method for each such child.</li> </ul></li> <li>Set the current
<code>rowIndex</code> to -1.</li> <li>Call the <code>decode()</code>
method of this component.</li> <li>If a <code>RuntimeException</code> is
thrown during decode processing, call {@link FacesContext#renderResponse}
and re-throw the exception.</li> </ul>

@param context {@link FacesContext} for the current request

@throws NullPointerException if <code>context</code> is <code>null</code>
primefaces/src/main/java/org/primefaces/component/patch/UIDataPatch.java