2013-10-21 35 views
0

我收到以下錯誤:JSF AJAX調用錯誤

Cannot find component with identifier "myForm:display" referenced from "myForm_j_idt32".

我的XHTML文件:

<div id="divScreen" align="center"> 
    <div id="divPage"> 
    <ui:insert> 
     <ui:include src="/banner.xhtml"></ui:include> 
    </ui:insert> 

    <h:form id="menuBarForm"> 
     <div id="menubar_link"> 
     <p:commandLink value="Home" action="#{loginAct.homeNavigation}" style="color: #ffffff;margin-left: 10px;" ajax="false"></p:commandLink> 
     <p:commandLink action="#{loginAct.dologout}" style="color: #ffffff;margin-left: 10px;" value="Logout" ajax="false"></p:commandLink> 
     </div> 
    </h:form> 


    <div id="divMnuAndFrm">     
     <div id="divMnuContnr"> 
     <h:form id="menuForm"> 
      <p:menu style="width: 94%;" model="#{authMenuModel.model}"></p:menu> 
     </h:form> 
     </div> 

     <div id="divFrmContnrwithmenu"> 
     <div style="height: 400px; margin: 10px 0px 0px 0px;width: 100%;"> 
      <h:form id="myForm">      
      <p:dataTable 
       var="filem" 
       value="#{fileViewManagementPnation.data}" 
       rowKey="#{filem.ftype}" 
       paginator="true" rows="10" 
       selection="#{fileViewManagementPnation.selectedFile}" 
       selectionMode="single" 
       emptyMessage="No Files Found"          
           > 

      <p:ajax event="rowSelect" update="myForm:display" oncomplete="fileDialog.show()"/> 

      <f:facet name="header"> 
       :: File Management ::  
      </f:facet> 

      <p:column sortBy="#{filem.ftype}" filterBy="#{filem.ftype}" headerText="FileType"> 
       #{filem.ftype} 
      </p:column> 

      <p:column headerText="Version" sortBy="#{filem.version}"> 
       #{filem.version} 
      </p:column> 

      <p:column headerText="Size"> 
       #{filem.fsize} 
      </p:column> 

      <p:column headerText="File">    
       Action 
      </p:column> 
      </p:dataTable>  


      <p:dialog header="File Details" widgetVar="fileDialog" resizable="false" width="400" 
      showEffect="explode" hideEffect="explode"> 

      <h:panelGrid id="display" columns="2" cellpadding="4"> 

       <f:facet name="header_det"> 
       <p:graphicImage value="/images/gep_logo.gif" /> 
       </f:facet> 

       <h:outputText value="File Name : " /> 
       <h:outputText value="#{fileViewManagementPnation.selectedFile.ftype}" id="ftype"/> 

       <h:outputText value="Size" /> 
       <h:outputText value="#{fileViewManagementPnation.selectedFile.fsize}" id="size"/> 

       <h:outputText value="File Type :" /> 
       <h:outputText value="#{fileViewManagementPnation.selectedFile.version}" id="version"/> 

      </h:panelGrid> 
      </p:dialog> 
     </h:form> 
     </div> 
    </div>  
    </div>  

    <div id="divFooter"> 
    <p>Developed and Maintained by National Informatics Centre</p> 
    </div> 
</div> 

我想過去的兩個星期,使其工作,但仍然感到沒有得到任何答案。 請在這個問題上幫助我。

+0

把你的時間放在正確的代碼 – Omar

+0

嘗試'update =「:myForm:display」'而不是'update =「myForm:display」'。 – Cold

回答

0

您應該能夠使用update=":myForm:display"update="display"而不是update="myForm:display"

看看NamingContainer in JSF2/Primefaces,它會給你更多的背景信息。這是因爲myForm:display引用myForm之內的嵌套NamingContainer,它被稱爲myForm,但您沒有。您要更新的組件直接位於同一個NamingContainer中,即myForm。所以只需調用上面提到的一個,你應該沒問題。

0

您沒有調用正確的組件。

您正在調用具有相同表單的組件。

調用myForm:display將尋找一個組件id爲myForm當前表單myForm內爲:myForm:myForm:display你沒有。

因此,您無需指定表單的完整限定名稱。您可以直接使用該組件的id爲:

兩個組件(調用組件,並調用的組件)是相同的形式內部,使用方法:update="display"

因此,你可以直接調用組件如上例所示,或使用其全限定名稱調用它update =":myForm:display"