3

(Java Server Faces 2.2) Primefaces 3.2 シンプル ファイル アップロード コントローラーを使用しています。アップロードする前にファイル情報にアクセスする必要があります。ManagedBeanファイルが選択されたときに使用できるリスナーと、アップロードを開始する前にファイル情報を取得する方法

4

1 に答える 1

2

タグはajax動作イベントをサポートしていないため、アップロードの開始時に起動する「onstart」属性を使用して、アップロードが開始する前にメソッドを呼び出すだけです。リモートコマンドを使用すると、次のようなことができます。

<p:remoteCommand name="beforeUpdate" partialSubmit="true" process="@this" 
                                 actionListener="#{myBean.doBefore}" value="" />

リモートコマンドの呼び出しをfileUploadに追加します

<p:fileUpload fileUploadListener="#{itemImportDialogController.uploadListener}" 
         mode="advanced" multiple="true" onstart="beforeUpdate()"
         styleClass="importItems" update=":itemImportView:fileForm" style="margin: 10px 0"/>

そして、Beanに次のようなメソッドを追加します

public void doBefore() {
     //DO SOME WORK
}

ファイル名については、ファイルをアップロードしているときにのみ取得できます

public void uploadListener(FileUploadEvent event) {

    UploadedFile file = event.getFile();
    //DO SOMETHING
}

これ以前は、コンポーネントとサーバー間でajaxの相互作用は不可能だったためです。申し訳ありませんが、不可能です。

ちなみに、jQueryを介してこれを管理して、次のようなイベントをキャッチすることができます

$('input[type=file]').change(function() { 
    //GET THE FILE AND SUBMIT IT TO THE SERVER WITH AJAX CALL 
});
于 2012-12-12T09:22:51.010 に答える