code: @Override
      public void decode(final FacesContext context, final UIComponent component) {
          final Sheet sheet = (Sheet) component;
          // update Sheet references to work around issue with getParent sometimes
          // being null
          for (final SheetColumn column : sheet.getColumns()) {
              column.setSheet(sheet);
          }
  
          // clear updates from previous decode
          sheet.getUpdates().clear();
  
          // get parameters
          // we'll need the request parameters
          final Map<String, String> params = context.getExternalContext().getRequestParameterMap();
          final String clientId = sheet.getClientId(context);
  
          // get our input fields
          final String jsonUpdates = params.get(clientId + "_input");
          final String jsonSelection = params.get(clientId + "_selection");
  
          // decode into submitted values on the Sheet
          decodeSubmittedValues(context, sheet, jsonUpdates);
  
          // decode the selected range so we can puke it back
          decodeSelection(context, sheet, jsonSelection);
  
          // decode client behaviors
          decodeBehaviors(context, sheet);
  
          // decode filters
          decodeFilters(context, sheet, params, clientId);
  
          final String sortBy = params.get(clientId + "_sortby");
          final String sortOrder = params.get(clientId + "_sortorder");
          if (sortBy != null) {
              int col = Integer.valueOf(sortBy);
              if (col >= 0) {
                  col = sheet.getMappedColumn(col);
                  sheet.setSortByValueExpression(sheet.getColumns().get(col).getValueExpression("sortBy"));
              }
          }
  
          if (sortOrder != null) {
              sheet.setSortOrder(sortOrder);
          }
  
          final String focus = params.get(clientId + "_focus");
          sheet.setFocusId(focus);
      }
docs: Overrides decode and to parse the request parameters for the two hidden input fields:
  <ul>
  <li>clientid_input: any new changes provided by the user</li>
  <li>clientid_selection: the user's cell selections</li>
  </ul>
  These are JSON values and are parsed into our submitted values data on the Sheet component.
  
  @param context
  @parma component