Program: 69647
Project: 69647
Buggy source:
/** 
 * @see org.olat.core.gui.components.form.flexible.FormItemImpl#evalFormRequest(org.olat.core.gui.UserRequest)
 */
@Override public void evalFormRequest(UserRequest ureq){
  String[] selectedIndexArr=getRootForm().getRequestParameterValues("String_Node_Str");
  if (selectedIndexArr != null) {
    setMultiSelectIndex(selectedIndexArr);
  }
  Form form=getRootForm();
  String selectedIndex=form.getRequestParameter("String_Node_Str");
  String dispatchuri=form.getRequestParameter("String_Node_Str");
  String select=form.getRequestParameter("String_Node_Str");
  String page=form.getRequestParameter("String_Node_Str");
  String sort=form.getRequestParameter("String_Node_Str");
  String filter=form.getRequestParameter("String_Node_Str");
  if ("String_Node_Str".equals(dispatchuri)) {
    evalSearchRequest(ureq);
  }
 else   if (StringHelper.containsNonWhitespace(page)) {
    int p=Integer.parseInt(page);
    setPage(p);
  }
 else   if (StringHelper.containsNonWhitespace(sort)) {
    String asc=form.getRequestParameter("String_Node_Str");
    sort(sort,"String_Node_Str".equals(asc));
  }
 else   if (StringHelper.containsNonWhitespace(selectedIndex)) {
    int index=selectedIndex.lastIndexOf('-');
    if (index > 0 && index + 1 < selectedIndex.length()) {
      String pos=selectedIndex.substring(index + 1);
      int selectedPosition=Integer.parseInt(pos);
      selectedObj=dataModel.getObject(selectedPosition);
      doSelect(ureq,selectedPosition);
    }
  }
 else   if (searchButton != null && searchButton.getFormDispatchId().equals(dispatchuri)) {
    evalSearchRequest(ureq);
  }
 else   if (extendedSearchButton != null && extendedSearchButton.getFormDispatchId().equals(dispatchuri)) {
    expandExtendedSearch(ureq);
  }
 else   if (dispatchuri != null && StringHelper.containsNonWhitespace(filter)) {
    filter(filter);
  }
 else   if (exportButton != null && exportButton.getFormDispatchId().equals(dispatchuri)) {
    export(ureq);
  }
 else   if (dispatchuri != null && select != null && select.equals("String_Node_Str")) {
    doSelectAll();
  }
 else   if (dispatchuri != null && select != null && select.equals("String_Node_Str")) {
    doUnSelectAll();
  }
 else   if (customButton != null && customButton.getFormDispatchId().equals(dispatchuri)) {
    customizeCallout(ureq);
  }
 else   if (customTypeButton != null && customTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.custom);
  }
 else   if (classicTypeButton != null && classicTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.classic);
  }
 else   if (dataTablesTypeButton != null && dataTablesTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.dataTables);
  }
 else {
    FlexiTableColumnModel colModel=dataModel.getTableColumnModel();
    for (int i=colModel.getColumnCount(); i-- > 0; ) {
      FlexiColumnModel col=colModel.getColumnModel(i);
      if (col.getAction() != null) {
        String selectedRowIndex=getRootForm().getRequestParameter(col.getAction());
        if (StringHelper.containsNonWhitespace(selectedRowIndex)) {
          doSelect(ureq,col.getAction(),Integer.parseInt(selectedRowIndex));
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * @see org.olat.core.gui.components.form.flexible.FormItemImpl#evalFormRequest(org.olat.core.gui.UserRequest)
 */
@Override public void evalFormRequest(UserRequest ureq){
  String[] selectedIndexArr=getRootForm().getRequestParameterValues("String_Node_Str");
  if (selectedIndexArr != null) {
    setMultiSelectIndex(selectedIndexArr);
  }
  Form form=getRootForm();
  String selectedIndex=form.getRequestParameter("String_Node_Str");
  String dispatchuri=form.getRequestParameter("String_Node_Str");
  String select=form.getRequestParameter("String_Node_Str");
  String page=form.getRequestParameter("String_Node_Str");
  String sort=form.getRequestParameter("String_Node_Str");
  String filter=form.getRequestParameter("String_Node_Str");
  if ("String_Node_Str".equals(dispatchuri)) {
    evalSearchRequest(ureq);
  }
 else   if (StringHelper.containsNonWhitespace(page)) {
    int p=Integer.parseInt(page);
    setPage(p);
  }
 else   if (StringHelper.containsNonWhitespace(sort)) {
    String asc=form.getRequestParameter("String_Node_Str");
    sort(sort,"String_Node_Str".equals(asc));
  }
 else   if (StringHelper.containsNonWhitespace(selectedIndex)) {
    int index=selectedIndex.lastIndexOf('-');
    if (index > 0 && index + 1 < selectedIndex.length()) {
      String pos=selectedIndex.substring(index + 1);
      int selectedPosition=Integer.parseInt(pos);
      selectedObj=dataModel.getObject(selectedPosition);
      doSelect(ureq,selectedPosition);
    }
  }
 else   if (searchButton != null && searchButton.getFormDispatchId().equals(dispatchuri)) {
    evalSearchRequest(ureq);
  }
 else   if (extendedSearchButton != null && extendedSearchButton.getFormDispatchId().equals(dispatchuri)) {
    expandExtendedSearch(ureq);
  }
 else   if (dispatchuri != null && StringHelper.containsNonWhitespace(filter)) {
    doFilter(filter);
  }
 else   if (exportButton != null && exportButton.getFormDispatchId().equals(dispatchuri)) {
    doExport(ureq);
  }
 else   if (dispatchuri != null && select != null && select.equals("String_Node_Str")) {
    doSelectAll();
  }
 else   if (dispatchuri != null && select != null && select.equals("String_Node_Str")) {
    doUnSelectAll();
  }
 else   if (customButton != null && customButton.getFormDispatchId().equals(dispatchuri)) {
    customizeCallout(ureq);
  }
 else   if (customTypeButton != null && customTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.custom);
  }
 else   if (classicTypeButton != null && classicTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.classic);
  }
 else   if (dataTablesTypeButton != null && dataTablesTypeButton.getFormDispatchId().equals(dispatchuri)) {
    setRendererType(FlexiTableRendererType.dataTables);
  }
 else {
    FlexiTableColumnModel colModel=dataModel.getTableColumnModel();
    for (int i=colModel.getColumnCount(); i-- > 0; ) {
      FlexiColumnModel col=colModel.getColumnModel(i);
      if (col.getAction() != null) {
        String selectedRowIndex=getRootForm().getRequestParameter(col.getAction());
        if (StringHelper.containsNonWhitespace(selectedRowIndex)) {
          doSelect(ureq,col.getAction(),Integer.parseInt(selectedRowIndex));
        }
      }
    }
  }
}