1

次のように私のプロジェクトで FileUpload を使用する場合:

意見

<h2>#{bundle['upload']}</h2>
<p:scrollPanel id="upload" styleClass="ui-widget-filebucket-upload">
    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{fileBucket.handleFileUpload}"
            mode="advanced" update=":download:files :messages"
            multiple="false" label="#{bundle['choose_button']}"
            uploadLabel="#{bundle['upload_button']}"
            cancelLabel="#{bundle['cancel_button']}" />
    </h:form>
</p:scrollPanel>
<p:resizable for="upload" />

ビューモデル

@ViewScoped
@Named("fileBucket")
public class DefaultFileBucketViewModel implements IFileBucketViewModel, Observer, Serializable {
    // ...
    public void handleFileUpload(FileUploadEvent event) {
        try {
            model.write(id, event.getFile().getFileName(), event.getFile().getInputstream());
        } catch (final Exception e) {
            log.error(e);
            messages.error(new BundleKey(Literals.BUNDLE_NAME, Literals.FILE_UPLOAD_ERROR));
        }
    }
}

アップロードは意図したとおりに機能します。ファイルが保存され、登録されているすべてのコンポーネントが更新されます。ただし、ドラッグ アンド ドロップを使用してファイルを追加するか、[選択] ボタンを使用してファイルを追加するかに関係なく、ファイルは常にアップロード リストに 2 回追加されます。

ファイルのアップロードが 2 回追加されます。

ここで何が起こっていますか?どうすれば修正できますか?

提案をありがとう

パスカル

4

1 に答える 1

1

私は偶然その解決策に出くわしました。折り返しのscrollPanelがこの動作を引き起こしているようです。次のコードは問題なく機能します。

<h2>#{bundle['upload']}</h2>
<h:form enctype="multipart/form-data" id="upload"
    styleClass="ui-widget-filebucket-upload ui-widget-content ui-corner-bottom ui-corner-top">
    <p:fileUpload id="upload_control"
        fileUploadListener="#{fileBucket.handleFileUpload}" mode="advanced"
        update=":download:files :messages" multiple="false"
        label="#{bundle['choose_button']}"
        uploadLabel="#{bundle['upload_button']}"
        cancelLabel="#{bundle['cancel_button']}" />
</h:form>
<p:resizable for="upload" />

PrimeFaces3.4のバグである必要があります。

于 2013-02-13T15:19:42.470 に答える