1

私はこの問題を抱えています: Type Test クラスのオブジェクトのリストを含む dataTable があり、「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

}

これを実装する別の方法があります。どうもありがとう

4

1 に答える 1

2

デバッグまたはログ システムを使用して、 projectCampaignManagementMBBean が@ViewScoped少なくとも、initAssignedToDataメソッド内のすべての要素ではないことを確認します。null

String(パフォーマンスのために)データテーブルを呼び出す前に、これをオブジェクトの属性にロードする方がよいでしょう(TestBean コンストラクターと があります@PostConstruct public void init())。そうしないと、これinitAssignedToDataが JSF フレームワークによって複数回呼び出される可能性があります。これに関する詳細情報:

于 2012-11-04T16:42:39.503 に答える