【问题标题】:calling a managed bean method in a datatable在数据表中调用托管 bean 方法
【发布时间】:2012-11-04 14:49:30
【问题描述】:

我遇到了这个问题:我有一个包含类型测试类对象列表的数据表,并且我有一个名为“分配给”的列,我想在其中显示该行中显示的测试的用户的名称是分配给所以我写了一个方法来做到这一点:

<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

}

那么有没有另一种方法来实现这一点。 非常感谢

【问题讨论】:

  • 你的代码没问题。 “它被视为错误”是什么意思。如果您的 IDE 抱怨它并且它按预期工作,则可能是您的 IDE 出错了。
  • @KeremBaydoğan 抱歉,我再次尝试运行它,但出现此错误:您可以看到 Edit
  • @AmiraGL if userByID is a map add containsKey check before userByID.get... if it doesn't contain return null (for example)...(通常在尝试使用get之前添加包含检查)
  • @Daniel 我试过了,但问题出在 El 表达式中,它没有被 eclipse 验证,它带有红色下划线

标签: jsf


【解决方案1】:

通过调试或使用日志系统检查您的projectCampaignManagementMB bean 是否至少为@ViewScoped,并且initAssignedToData 方法中的所有元素都不是null

在调用数据表之前将这个String 加载到Test 对象的属性中会更好(为了性能)(你有bean 构造函数和@PostConstruct public void init())。否则,这个initAssignedToData 可能会被JSF 框架多次调用。有关此的更多信息:

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多