2017-01-01 1 views
0

Я разрабатываю страницу с подробным описанием, где я могу вставить новую строку в таблицу данных (AstAssetReturnsVO) и установить ее ссылочный ключ в идентификатор главной таблицы (AstAssetsVO) , Код запускается как часть активности вызова метода прямо до того, как я доберусь до вызова JSFF.java.lang.NullPointerException при использовании getCurrentRow в adf

По какой-то причине я получаю исключение 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 

Этот ответ специфичен выше двух строк кода. Я не рассматривал ваш прецедент и остальную часть кода.

После того, как API vo.executeQuery(), итератор строк будет указывать на один над первой строкой. Итак, у вас есть два варианта. Либо используйте vo.hasNext(), чтобы проверить, есть ли следующая строка и петля через записи, или если вам просто нужна первая строка, а затем используйте vo.first(), чтобы получить ее. Ниже приведен пример кода для последующего случая.

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

Спасибо, я проверю его и предоставит обратную связь как можно скорее. –

Смежные вопросы