我正在开发一个mater-detail页面,我可以在一个详细信息表(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 ;
}
答案 0 :(得分:0)
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
}