2017-01-01 78 views
0

我正在開發一個mater-detail頁面,我可以在詳細信息表(AstAssetReturnsVO)中插入一個新行並將其引用鍵設置爲主表的ID(AstAssetsVO) 。代碼在我進入JSFF調用之前作爲方法調用活動的一部分運行。在adf中使用getCurrentRow時發生java.lang.NullPointerException

由於某種原因,我得到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

檢查getAstAssetsVO()是否在那裏返回null。 –

+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 
} 
+0

謝謝我會檢查它,並儘快提供反饋意見。 –

相關問題