2011-08-10 8 views
3

저는 현재 PrimeFaces dataTable을 사용하고 있으며 사용자가 추가 한 직후에 새로운 dataTable을 추가하려고 끊임없이 노력하고 있습니다. 서버 쪽, 모든 것이 작동 중 - 데이터가 데이터베이스와 하드 디스크에 모두 저장됩니다. 성공적인 요청에 따라 부분 페이지 업데이트를보고 싶습니다. 제대로 작동하지 않는 것 같습니다. 내 XHTML 코드는 다음과 같습니다.PrimeFaces dataTable이 Ajax 요청 후 업데이트되지 않습니다.

<div class="content"> 
     <div id="mainContent"> 

      <div class="topNav"> 
       <h:form id="navForm"> 
        <p:commandButton value="Upload"/> 
        <p:commandButton value="New Folder" onclick="createDlg.show();" /> 
        <p:commandButton value="Delete Folder" action="#" /> 
       </h:form> 
      </div> 

      <div id="filePanel"> 
       <h:form id="dataTable" prependId="false">  
        <p:dialog header="Create" widgetVar="createDlg" modal="true" height="200"> 

         <p:panel header="New Folder"> 
          <h:panelGrid columns="2"> 
           <h:outputLabel value="Name:" for="txt_name"></h:outputLabel> 
           <p:inputText id="txt_name" value="#{directoryController.newDir.name}" required="true" /> 
           <p:commandButton value="Create" actionListener="#{directoryController.createNew}" update="dGrid" oncomplete="createDlg.hide();"/> 
           <p:ajaxStatus style="width:16px; height:16px;"> 
            <f:facet name="start"> 
             <h:outputText value="Saving..." /> 
            </f:facet> 
            <f:facet name=""> 
             <h:outputText value="Complete." /> 
            </f:facet> 
           </p:ajaxStatus> 
          </h:panelGrid> 
         </p:panel> 

        </p:dialog> 
        <p:dataTable id="dGrid" value="#{directoryController.itemsByOwner}" var="dir"> 
         <p:column selectionMode="multiple"/> 
         <p:column sortBy="#{dir.name}">         
          <f:facet name="header"> 
           File Name 
          </f:facet> 
          <h:outputText value="#{dir.name}" /> 
         </p:column> 
         <p:column> 
          <f:facet name="header"> 
           File Size 
          </f:facet> 
         </p:column> 
        </p:dataTable>         
       </h:form>      
      </div> 
     </div> 
    </div> 

마지막으로 여기에 내 백킹 빈이 있습니다.

... ...

<p:outputPanel autoUpdate="true"> 

       <p:dataTable id="dGrid" value="#{directoryController.itemsByOwner}" var="dir"> 
        <p:column selectionMode="multiple"/> 
        <p:column sortBy="#{dir.name}">         
         <f:facet name="header"> 
          File Name 
         </f:facet> 
         <h:outputText value="#{dir.name}" /> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          File Size 
         </f:facet> 
        </p:column> 
       </p:dataTable>  
</p:outputPanel> 

또는 당신은 단순히 수 : 당신이 3.0.M4를 사용하는 경우

public String createNew(){ 
    newDir.setDateCreated(new Date()); 
    newDir.setDateModified(new Date()); 
    newDir.setId(BigDecimal.ZERO); 
    newDir.setLocation(ROOT_DIRECTORY + currentUser.getUsername() + "/"); 
    newDir.setFilesCollection(f); 
    newDir.setDescription(""); 
    newDir.setOwner(currentUser); 
    current = newDir; 
    create(); 
    persistDirectoryFromObject(newDir); 
    newDir = new Directory(); 
    RequestContext.getCurrentInstance().addPartialUpdateTarget("dGrid"); 


    return null; 
} 

답변

1

당신은 할 수

<p:commandButton value="Create" action="#{directoryController.createNew}" oncomplete="createDlg.hide();" ajax="false" /> 
관련 문제