1

jsfページの1つに単純なファイルアップロードメカニズムがあります。ファイルがアップロードされると、起動するActionListenerがあります。この時点で、ユーザーがアップロードしたファイルの名前にアクセスできるので、これをoutputTextコンポーネントに追加します。ファイルが表示されるように、Javaコードからフォームを再レンダリングするにはどうすればよいですか?いくつかのajax関数を呼び出すことはできますか?

/**
 * Called when a file is uploaded
 * @param event The FileUploadEvent that contains info on the file uploaded
 */
public void handleFileUpload(FileUploadEvent event){ 
    data = event.getFile().getContents();
    name = event.getFile().getFileName();
}

上記は、ファイルがアップロードされた後に実行されるコードです。あなたは私がファイルの名前を取得しているのを見ることができます。名前が表示されるように、outputTextを再レンダリングする必要があります。

4

1 に答える 1

2

これは通常、ビュー側で宣言されます。

それについては何も言及していませんが(これは悪いことです。使用しているJSF実装とコンポーネントライブラリを質問で常に言及する必要があります。すべてを「標準JSF」として過度に一般化しないでください)、リスナーメソッドコードこれは、PrimeFacesに固有のものとして認識できます<p:fileUpload>

その場合、実際にはコンポーネント自体のupdate属性を使用する必要があります。この属性は、ajaxリクエストの完了時に更新するコンポーネントの(相対的な)クライアントIDを参照する必要があります。

<p:fileUpload ... update="text" />
...
<h:outputText id="text" value="#{bean.text}" />

それで全部です。この特定の例では、ファイル名をtextプロパティに割り当てる必要があります。

参照:

于 2012-11-17T03:58:34.773 に答える