2012-07-23 68 views
0

我有一個多文件上傳組件的treetable。如果我上傳1個文件,它正確地更新我的treetable與該文件。如果我嘗試並同時上傳多個文件(可以說file1和file2),它只會更新與文件1的樹表。如果我然後上傳另一個文件(file3),然後它更新樹表file1,file2和file3,所以它似乎是更新的問題。primefaces多文件上傳只更新樹表第一個文件上傳

有沒有人有任何洞察或知道這是否是一個錯誤?

<h:form id="attachmentsForm" enctype="multipart/form-data"> 
    <p:treeTable value="#{contentEditorBacking.attachments}" var="node"> 
     <p:column> 
      <f:facet name="header">Name</f:facet> 
      <h:outputLink value="#{node.link}" target="_blank" disabled="#{node.disabled}"> 
       <h:outputText value="#{node.displayName}"/> 
      </h:outputLink> 
     </p:column> 

     <p:column> 
      <f:facet name="header">Size</f:facet> 
      <h:outputText value="#{node.size}" /> 
     </p:column> 

     <p:column> 
      <f:facet name="header">Modified By</f:facet> 
      <h:outputText value="#{node.modifier}" /> 
     </p:column> 

     <p:column> 
      <f:facet name="header">Delete</f:facet> 
      <p:commandLink styleClass="ui-icon ui-icon-trash" id="deleteProperty" actionListener="#{contentEditorBacking.deleteAttachment}" 
        rendered="#{node.canDelete}" update="attachmentsForm"> 
        <f:attribute name="filename" value="#{node.displayName}" /> 
       </p:commandLink> 
     </p:column> 
    </p:treeTable> 
    &nbsp;&nbsp; 
    <p:fileUpload fileUploadListener="#{contentEditorBacking.handleFileUpload}" 
     mode="advanced" sizeLimit="#{contentEditorBacking.fileSizeLimit}" 
     invalidSizeMessage="#{contentEditorBacking.fileSizeMessage}" 
     allowTypes="#{contentEditorBacking.allowedFileTypes}" update=":controlTabs:attachmentsForm" /> 
</h:form> 

靠山

public void handleFileUpload(FileUploadEvent event) throws Exception{ 

     UploadedFile toSave = event.getFile(); 
     System.out.println("fileName = "+event.getFile()); 
     String fileName = toSave.getFileName(); 
     String downloadLink = ""; 
     Long size = event.getFile().getSize(); 
     long version = 1; 
     User user = cm.getUser(); 
     String creator = user.getUserName(); 
     Date modDate = new Date(); 
     boolean canDelete = true; 
     boolean canUpdate = true; 
     String displayName = fileName + "- pending"; 

     new DefaultTreeNode(new Attachment(downloadLink,size,version,creator,modDate,canDelete,canUpdate,displayName,true), attachRoot); 
     addNeedToSaveMessage(); 
    } 

編輯

我添加了一個ID爲treetable中,並改變了我的文件上傳更新到treetable中的ID,而不是形式,標籤的ID,然後解決了我的問題。

我一直認爲通過更新父元素,它應該更新它的所有子元素。這是不是真的,或者在treeTable中有例外嗎?

+0

什麼是您所指的UINamingContainer「controlTabs」?另外,您的fileUpload組件上沒有設置multiple =「true」 – Ravi 2012-07-24 00:00:40

+0

我不需要將多個設置爲true。您可以選擇一個文件,然後再次單擊選擇一個文件,然後單擊上傳並上傳所有文件。顯然不需要controlTabs。我只能使用'attachmentsForm'。用controlTabs做:attachmentsForm也可以。 – Catfish 2012-07-24 03:50:38

+0

我編輯更新語句只是'attachmentsForm' – Catfish 2012-07-24 03:51:16

回答

0

顯然,對於文件上傳組件,我不得不更新實際的樹表而不是它的父表單標記。

相關問題