在ui:include代码中自动完成抛出nullpointer

时间:2012-09-27 18:45:35

标签: jsf-2 primefaces uiinclude

我在我的代码中使用PrimeFaces autoComplete框。我在我的应用程序的各个地方使用过这个组件没有问题。当我把它放在通过ui:include动态包含的代码块中时,我得到:

14:32:30,115 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (http-steves-10.11.100.136-15081-2) java.lang.NullPointerException

如果我在ui:include之前使用确切的代码副本并将其粘贴到父级,它就可以在那里工作。很明显,这个问题与它在ui中有关:include。包含中的ajax控件是否存在问题?我需要解决这个问题?

我的环境是PF3.4RC1,JBoss7.1,Mojarra 2.1.5

更新 这是我正在使用的代码。我没有打扰包括支持bean,因为我在该代码中放置了断点,只有当我使用“工作”自动完成时才触及它。作为一个额外的信息,我尝试在片段上放置一个命令按钮,它也无法在辅助bean上调用actionlistener方法。

主(父)页面:

<p:panel id="dataEntryPane"
    rendered="#{manageItemHandler.currItem ne null}">
    <!-- This Auto Complete works -->
    <p:autoComplete
        completeMethod="#{itemAutoComplete.autoCompleteList}" var="item"
        itemLabel="#{item.itemNum}" itemValue="#{item}"
        converter="ItemConverter" queryDelay="750">

        <f:facet name="itemtip">
        <p:panelGrid columns="2" cellpadding="5" style=" width:400px;">
                <f:facet name="header">
                <p:column colspan="2">
                    <h:outputText value="Item Information"
                         style="font-weight:bold; font-size:20px; font-style:italic;" />
                 </p:column>
                 </f:facet>

             <p:row>
                 <h:outputText value="#{item.itemNum}" />
             </p:row>
             <p:row>
                 <h:outputText value="#{item.itemDesc}" />
             </p:row>
         </p:panelGrid>
     </f:facet>
 </p:autoComplete>


    <ui:include src="#{manageItemHandler.dataEntryFrag}" />
</p:panel>

包含片段:

<p:panel>
    <f:facet name="header">
        <h:outputText value="Operation - #{manageItemHandler.dataEntryOp.operationNum} BOM Entry" />
        <p:commandButton value="SignOff"
            actionListener="#{manageItemHandler.doSignOff(manageItemHandler.dataEntryOp.bom)}"
            style="float:right"
            rendered="#{speed2Session.isRendered('editManageItemOp')}" />
    </f:facet>

        <!-- This autocomplete does not work -->
    <p:autoComplete completeMethod="#{itemAutoComplete.autoCompleteList}"
        var="item" itemLabel="#{item.itemNum}" itemValue="#{item}"
        converter="ItemConverter" queryDelay="750">

        <f:facet name="itemtip">
            <p:panelGrid columns="2" cellpadding="5" style=" width:400px;">
                <f:facet name="header">
                    <p:column colspan="2">
                        <h:outputText value="Item Information" style="font-weight:bold; font-size:20px; font-style:italic;" />
                    </p:column>
                </f:facet>

                <p:row>
                    <h:outputText value="#{item.itemNum}" />
                </p:row>

                <p:row>
                    <h:outputText value="#{item.itemDesc}" />
                </p:row>
            </p:panelGrid>
        </f:facet>
    </p:autoComplete>

    <p:dataTable id="dt_bom" value="#{manageItemHandler.dataEntryOp.bom}"
        var="bom">
        <p:column headerText="Item Number">
            <p:inputText value="#{bom.component}"
                disabled="#{speed2Session.isDisabled('editManageItemOp')}" />
        </p:column>
        <p:column headerText="Item Description">
            <h:outputText value="#{bom.descrip}" />
        </p:column>
        <p:column headerText="QTY">
            <p:inputText value="#{bom.qty}"
                disabled="#{speed2Session.isDisabled('editManageItemOp')}"></p:inputText>
        </p:column>
    </p:dataTable>
    <p:commandButton value="test button"></p:commandButton>
</p:panel>

不幸的是,上面的错误就是我在堆栈跟踪中得到的所有错误。以下是完整性的几个先行线。我在跟踪中两次输入自动完成框,您可以看到我记录时记录的内容。

15:58:11,578 INFO  [stdout] (http-steves-10.11.100.136-15081-6) Hibernate: 
15:58:11,578 INFO  [stdout] (http-steves-10.11.100.136-15081-6)     select
15:58:11,579 INFO  [stdout] (http-steves-10.11.100.136-15081-6)         itemdata0_.DESCRIP as col_0_0_ 
15:58:11,579 INFO  [stdout] (http-steves-10.11.100.136-15081-6)     from
15:58:11,580 INFO  [stdout] (http-steves-10.11.100.136-15081-6)         MCSITEM itemdata0_ 
15:58:11,580 INFO  [stdout] (http-steves-10.11.100.136-15081-6)     where
15:58:11,581 INFO  [stdout] (http-steves-10.11.100.136-15081-6)         itemdata0_.ITEM=?

15:58:16,538 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) In AutoLoginFilter.doFilter
15:58:16,541 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) In SecurityFilter.doFilter
15:58:16,542 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) OriginalURL: /speed2/modules/main.faces
15:58:16,575 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (http-steves-10.11.100.136-15081-6) java.lang.NullPointerException
16:02:43,442 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) In AutoLoginFilter.doFilter
16:02:43,445 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) In SecurityFilter.doFilter
16:02:43,446 INFO  [com.newpig] (http-steves-10.11.100.136-15081-6) OriginalURL: /speed2/modules/main.faces
16:02:43,475 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (http-steves-10.11.100.136-15081-6) java.lang.NullPointerException

更新2: 我的目的是在用户点击按钮时动态交换屏幕的一部分。作为测试,当创建支持bean时,我默认了有问题的片段(SpecSheet)。当我这样做时,自动完成功能适用于该片段。当我切换到具有自动完成功能的另一个片段(BOM)时,那个片段不起作用。如果我切换回SpecSheet,那自动完成仍然有效。

0 个答案:

没有答案