code: public void setTableModel(final TableModel tableModel) {
  		getOrCreateComponentModel().tableModel = tableModel;
  		getOrCreateComponentModel().rowIndexMapping = null;
  		setSelectedRows(null);
  		setExpandedRows(null);
  		clearPrevExpandedRows();
  		clearPrevRenderedRows();
  
  		if (tableModel instanceof BeanBoundTableModel) {
  			((BeanBoundTableModel) tableModel).
  					setBeanProvider(new BeanBoundTableModelBeanProvider(this));
  			((BeanBoundTableModel) tableModel).setBeanProperty(".");
  		}
  
  		if (tableModel instanceof ScrollableTableModel) {
  			if (!isPaginated()) {
  				throw new IllegalStateException(
  						"Set a ScrollableTableModel on a table that is not paginated.");
  			}
  
  			int startIndex = getCurrentPage() * getRowsPerPage();
  			int endIndex = startIndex + getRowsPerPage() - 1;
  			((ScrollableTableModel) tableModel).setCurrentRows(startIndex, endIndex);
  		}
  
  		// Flush the repeater's row contexts and scratch maps
  		repeater.reset();
  	}
docs: Sets the table model which provides the row/column data.
  
  @param tableModel the table model.