p:commandButton在添加update属性时抛出NPE

时间:2014-04-17 22:00:52

标签: jsf-2

我在添加更新属性后立即获得NPE。我无法弄清楚这有什么问题。

xhtml在

之下
    <p:dataTable id="mpirList" var="mpir"
    value="#{PIAMpir.mpirModel}" style="margin-top:9px"
    paginator="true" rows="10" paginatorPosition="bottom"
    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
    rowsPerPageTemplate="10,20">

    <p:column id="mpirValuecolumn" headerText="MPIR"
        style="width:25px;">
        <h:outputText id="mpirValueTxt" value="#{mpir.mpir}" />
    </p:column>
    <p:column id="mpirEffectiveRangecolumn" headerText="Effective Range"
        style="width:25px;text-align:center;">
        <h:outputText id="mpirEffRangeTxt" value="#{mpir.effectiveRangeAndYear}" />
    </p:column> 
    <p:column id="mpirActioncolumn" headerText="Action"
        style="width:25px;text-align:center;">
            <p:commandButton id="updateMpirLink" value="Update" actionListener="#{PIAMpir.updateSel}" update="mpirDetailPanel">                                 
                <f:setPropertyActionListener target="#{PIAMpir.mpirs}" value="#{PIAMpir.mpirs}" />
                <f:setPropertyActionListener target="#{PIAMpir.selectedMpirId}" value="#{mpir.mpirId}" />
                <f:setPropertyActionListener target="#{PIAMpir.addNew}" value="false" />
                <f:setPropertyActionListener target="#{PIAMpir.showDetails}" value="true" />
            </p:commandButton >
    </p:column> 
</p:dataTable>  
<p:spacer width="5" height="5" />
<h:commandButton id="addNewMpirLink" value="Add New" actionListener="#{PIAMpir.prepForAddNewMpir}" >
    <f:setPropertyActionListener target="#{PIAMpir.addNew}" value="true" />
    <f:setPropertyActionListener target="#{PIAMpir.showDetails}" value="true" />
</h:commandButton>              
<p:spacer width="50" height="50" />
<p:panel id="mpirDetailPanel" autoUpdate="true" >

我得到的错误是

[4/18/14 6:33:49:639 EST] 00000044 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E:在应用程序中的servlet ACHAdminMpir的一个服务方法中创建的未捕获异常ACHProviderInterface耳。创建异常:javax.servlet.ServletException:javax.portlet.PortletException:java.lang.NullPointerException 在com.ibm.ws.portletcontainer.invoker.impl.PortletServlet.doDispatch(PortletServlet.java:369) 在com.ibm.ws.portletcontainer.invoker.impl.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:82) 在com.ibm.isclite.container.collaborator.PortletServletCollaborator.doDispatch(PortletServletCollaborator.java:143) 在.....

1 个答案:

答案 0 :(得分:0)

你不能像这样更新mpirDetailPanel,因为它与动作源不在同一个命名容器中。您可以指定绝对路径。 假设您提供的脚本位于h:from,则可以使用update=":formId:mpirDetailPanel"

实现此目的