【问题标题】:java.lang.NullPointerException when using getCurrentRow in adf在 adf 中使用 getCurrentRow 时出现 java.lang.NullPointerException
【发布时间】:2017-01-03 02:15:19
【问题描述】:

我正在开发一个主明细页面,我可以在其中将新行插入明细表 (AstAssetReturnsVO) 并将其引用键设置为主表的 ID (AstAssetsVO)。在我进行 JSFF 调用之前,代码作为方法调用活动的一部分运行。

由于某种原因,当它到达下面的标记行时,我得到了 NullPointerException,我不知道为什么 getCurrentRow 返回一个空指针。我检查了文档here,它应该返回与数据控件的当前行相对应的迭代器的当前行。

请让我知道我可能做错了什么。

最好的问候,

public void assetReturnInitialization(){
    getAstAssetReturnsVO().clearCache();
    getAstAssetReturnsVO().executeEmptyRowSet();
    Row row = getAstAssetReturnsVO().createRow(); 

    row.setAttribute("Stat", 99);
    row.setAttribute("AsrtDate", "1396/12/31");

    getAstAssetsVO().executeQuery();
    Row assetRow = getAstAssetsVO().getCurrentRow();    <<<<<<< ERROR OCCURS HERE
    row.setAttribute("AsetId", assetRow.getAttribute("Id"));

    getAstAssetsVO().getCurrentRow().setAttribute("Status", "Returned".toUpperCase());
    getAstAssetReturnsVO().insertRow(row);
    getAstAssetReturnsVO().setCurrentRow(row);

    return ;
}

【问题讨论】:

  • 检查getAstAssetsVO()是否在那里返回null
  • 已经检查...不是这样。

标签: oracle-adf


【解决方案1】:
getAstAssetsVO().executeQuery();
Row assetRow = getAstAssetsVO().getCurrentRow();    <<<<<<< ERROR OCCURS HERE

此答案特定于以上两行代码。我没有查看您的用例和其余代码。

在 vo.executeQuery() API 之后,行迭代器将指向第一行上方的一个。所以,你有两个选择。使用 vo.hasNext() 检查是否有下一行并遍历记录,或者如果您只需要第一行,则使用 vo.first() 获取它。下面是后面案例的示例代码。

getAstAssetsVO().executeQuery();
Row assetRow = getAstAssetsVO().first();
if (assetRow != null) {
    //your logic
}

【讨论】:

  • 谢谢,我会检查并尽快提供反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 2012-12-14
  • 2014-08-17
  • 1970-01-01
  • 2020-02-27
  • 2018-02-03
相关资源
最近更新 更多