2011-08-10 14 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> 

またはあなたができます:

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

あなたはあなたができる3.0.M4を使用している場合

<p:commandButton value="Create" action="#{directoryController.createNew}" oncomplete="createDlg.hide();" ajax="false" /> 
関連する問題