2012-11-04 21 views
1

我得到這個問題:我有一個dataTable包含類型測試類的對象列表,我有一列名爲「分配給」,其中我想顯示用戶的名稱該行中顯示的測試被分配給所以我寫了這樣做的方法:在數據表中調用託管bean方法

<p:column headerText="Assigned to"> 
    <h:outputText value="#{projectCampaignManagementMB.initAssignedToData(test)}" /> 
</p:column> 

我得到這個錯誤: nov. 04, 2012 4:42:06 PM com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit Grave: javax.el.ELException: /campaingManagement.xhtml @2388,132 value="#{projectCampaignManagementMB.initAssignedToData(test)}": java.lang.NullPointerException

這裏的所有代碼:

<p:dataTable var="test" value="#{projectCampaignManagementMB.campaignTestList}" > 
    <p:column headerText="User"> 
    </p:column> 

    <p:column headerText="Assigned to"> 
     <h:outputText value="#{projectCampaignManagementMB.initAssignedToData(test)}" /> 
    </p:column> 

</dataTable> 

方法:

public String initAssignedToData(Test pTest){ 

    int assigendID = currentCampaign.getAssignedUserID(pTest); 

    User pUser = (User) userByID.get(new Integer(assigendID)); 

    System.out.println("User assigned is = " + pUser + " , assigendID = " + assigendID); 

    return(((User) userByID.get(new Integer(assigendID))).getLoginFromModel()); // TO CHANGE 

} 

那麼,有沒有實現這個法子。 非常感謝

+0

你的代碼沒問題。 「它被認爲是一個錯誤」是什麼意思?如果您的IDE對此抱怨並且它按預期工作,那麼您的IDE可能是錯誤的。 –

+0

@KeremBaydoğan對不起,我嘗試再次運行它,我得到這個錯誤:你可以看到編輯 – AmiraGL

+0

@AmiraGL如果userByID是一個地圖添加containsKey檢查之前'userByID.get ...'如果它不包含返回null(例如)...(通常在嘗試使用'get'之前添加包含檢查) – Daniel

回答

2

檢查您的projectCampaignManagementMB bean是@ViewScoped至少和initAssignedToData方法中所有的元素都沒有null通過調試或使用日誌系統。

在調用數據表(您有bean構造函數和@PostConstruct public void init())之前,將這個String加載到您的Test對象的屬性中會更好(用於執行)。否則,這個initAssignedToData可能會被JSF框架多次調用。有關更多信息:

相關問題