当我稍后尝试从表中检索行数据时,对ADF表进行排序会导致空指针异常

时间:2012-03-01 06:22:12

标签: oracle-adf

我正在创建一个这样的Adf表:

<af:table value="#{bindings.TargetsAssign.collectionModel}"
                            var="row"
                            rows="#{bindings.TargetsAssign.rangeSize}"
                            fetchSize="#{bindings.TargetsAssign.rangeSize}"
                            rowBandingInterval="0"
                            selectionListener="#{bindings.TargetsAssign.collectionModel.makeCurrent}"
                            rowSelection="multiple" 
                            styleClass="AFStretchWidth" columnStretching="last"
                            binding="#{pageFlowScope.mappingBean.m_mappingtable}"
                            id="t3">

此表中的所有列都是可排序的。 为了在该表中选择多行,Bean文件包含以下代码:

RowKeySet rks = m_mappingtable.getSelectedRowKeys();
    Iterator itr = rks.iterator();
    DCBindingContainer bindings =  (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCIteratorBinding targetIter = bindings.findIteratorBinding("TargetsAssign");
    RowSetIterator tableIterator = targetIter.getRowSetIterator();
    while (itr.hasNext())
    {
        key = (Key) ((List)itr.next()).get(0);
        Row row = tableIterator.getRow(key);
        String str=(String)row.getAttribute("TargetName");   /*----------------->> THis line is throwing Null pointer exception. 
         .
         .
         .further code......*/
    }

在使用UI中的排序选项对表进行排序之前一切正常但是一旦我们对表进行排序并再次尝试选择表中的行以使用上面的代码执行某些操作,则抛出空指针异常,因为行row = tableIterator.getRow(key)返回null在这种情况下。

任何人都可以告诉它为什么会发生以及如何解决它。 感谢。

1 个答案:

答案 0 :(得分:0)

尝试删除表格的selectionListener属性