0

我收到以下错误:

找不到从“myForm_j_idt32”引用的标识符为“myForm:display”的组件。

我的 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>

我正在尝试过去两周使其正常工作,但仍然没有得到任何答案。请在这个问题上帮助我。

4

2 回答 2

0

您应该能够使用update=":myForm:display"orupdate="display"代替update="myForm:display".

看看JSF2/Primefaces 中的 NamingContainer,它会给你更多的背景信息。这是因为myForm:display指的是嵌套的 NamingContainer 在myForm其中被调用myForm,但你没有那个。您要更新的组件直接在同一个 NamingContainer 中,即myForm. 所以只需调用上述之一,你应该没问题。

于 2013-10-21T11:25:49.597 回答
0

您没有调用正确的组件。

您正在调用具有相同形式的组件。

调用将在当前表单中myForm:display查找具有 id 的组件,因为您没有该组件。myFormmyForm:myForm:myForm:display

因此,您不需要指定表单的完整限定名。您可以直接使用组件的 id,如下所示:

两个组件(调用组件和被调用组件)都在同一个表单中,因此使用:update="display"

因此,您可以像上面的示例一样直接调用组件,也可以使用其完整限定名来调用它update =":myForm:display"

于 2013-10-21T11:26:24.723 回答