OracleADF在选择多行时,rowsetiterator不会在第一次方法调用时填充

eqqqjvef  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(212)

不确定如何最好的词标题,但这里的要点。
目标是检索表中所有选定的行并对其进行操作。我遇到的问题是,在第一次调用backingbean中的方法时,rowsetiterator不会被填充。它在第二次调用时会被填充。
如何让它在第一次调用时正常工作?
毫无疑问,我不是很清楚,如果你需要任何额外的信息,请告诉我。下面是bean方法的一个片段:

public String deleteSelectedQueries()
  {
    JSFUtils.addInformationMessage("Delete");
    RowKeySet selectedQueries =
      getSavedQueriesByUserTable().getSelectedRowKeys();
    Iterator selectedQueriesIter = selectedQueries.iterator();
    DCBindingContainer bindings =
      (DCBindingContainer) BindingContext.getCurrent().getCurrentBindingsEntry();
    DCIteratorBinding savedQueriesByUserIter =
      bindings.findIteratorBinding("SavedQueriesByUserROVOIterator");
    RowSetIterator savedQueriesByUserRowSetIterator =
      savedQueriesByUserIter.getRowSetIterator();
    while (selectedQueriesIter.hasNext())
    {
      Key key = (Key) ((List) selectedQueriesIter.next()).get(0);
      Row currentRow = savedQueriesByUserRowSetIterator.getRow(key);
      System.out.println(currentRow.getAttribute("QueryName"));
    }
    return null;
  }
}

有什么想法吗?
谢谢!

n8ghc7c1

n8ghc7c11#

我觉得这个代码不错。
问题可能来自 <af:table> 标记,请确保已删除这些标记:

selectedRowKeys="#{bindings.SavedQueriesByUserROVO.collectionModel.selectedRow}"
selectionListener="#{bindings.SavedQueriesByUserROVO.collectionModel.makeCurrent}"

相关问题