我遇到了这个问题:我有一个dataTable,其中包含Type Test类的对象列表,我有一个名为“Assigned to”的列,其中我想显示行中显示的测试用户的名称分配到所以我写了一个方法来做到这一点:
<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 :(得分:2)
通过调试或使用日志系统,至少检查projectCampaignManagementMB
bean是否为@ViewScoped
,initAssignedToData
方法中的所有元素都不是null
。
在调用数据表(您有bean构造函数和String
)之前,将Test
加载到@PostConstruct public void init()
对象的属性中会更好(性能)。否则,JSF框架可以多次调用此initAssignedToData
。有关更多信息: