0

複数ファイルのアップロード コンポーネントを含むツリーテーブルがあります。1 つのファイルをアップロードすると、ツリーテーブルがそのファイルで正しく更新されます。

同時に複数のファイル (file1 と file2 としましょう) をアップロードしようとすると、ファイル 1 でツリー テーブルのみが更新されます。その後、別のファイル (file3) をアップロードすると、ツリー テーブルが file1、file2 で更新されます。およびfile3なので、更新に問題があるようです。

誰かがこれについて何か洞察を持っていますか、それがバグかどうか知っていますか?

<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();
    }

編集

treeTable に id を追加し、fileUpload の更新を form タグの id ではなく treeTable の id に変更して、問題を解決しました。

親要素を更新することで、そのすべての子要素を更新する必要があると常に考えていました。それは真実ではありませんか、それともtreeTableのようにこれに例外がありますか?

4

1 に答える 1

0

どうやらファイルアップロードコンポーネントの場合、親フォームタグではなく実際のツリーテーブルを更新する必要がありました。

于 2012-07-30T21:20:35.350 に答える