1

私は使用<rich:fileupload>していますが、コントローラーにいくつかの追加パラメーターを送信する必要があります。これに使っ<f:param>てみました。

ビューは次のとおりです。

<rich:fileUpload 
    fileUploadListener="#{fileUploadController.listener}"
    maxFilesQuantity="#{fileUploadController.uploadsAvailable}"
    addControlLabel="Hinzufügen"
    uploadControlLabel="Hochladen"
    cancelEntryControlLabel="Abbrechen"
    doneLabel="Fertig"
    clearAllControlLabel="Alle entfernen"
    noDuplicate="true"
    stopControlLabel="Stop"
    clearControlLabel="Entfernen"
    id="upload"                             
    immediateUpload="#{fileUploadController.autoUpload}"  
    ajaxSingle="true"
    acceptedTypes="jpg" 
    allowFlash="#{fileUploadController.useFlash}"
    rerender="info">

    <a4j:support event="onuploadcomplete" reRender="info" status="globalStatus" />

    <f:param 
    value="#{imageFormat}"  
    name="#{fileUploadController.imageFormat}"/>

</rich:fileUpload>

これがFileUploadControllerバッキングBeanです。

    private String imageFormat;

    public void setImageFormat(String imageFormat) {
        this.imageFormat = imageFormat;
    }

    public String getImageFormat() {
        return imageFormat;
    }

ただし、セッターが呼び出されることはないため、変数は常にnullです。は#{imageFormat}正しい値です。で確認しました<h:outputText>

<a4j:param>引っ掛けるボタンがないので使えません。

JSF2.0ではなくJSF1.2を使用しています。

4

1 に答える 1

2

アップロードの特定のフェーズでいくつかの操作を実行するために、rich:fileUploadのイベントにアタッチできます。標準のイベントに加えて、rich:fileUploadはいくつかの特定のイベントを提供します。

  • ファイルの追加操作で呼び出される「onadd」イベントハンドラー
  • クライアント側でアップロードをキャンセルできる「onupload」
  • リストのすべてのファイルがアップロードされた後に呼び出される「onuploadcomplete」
  • キャンセル制御によりアップロードがキャンセルされた後に呼び出される「onuploadcanceled」
  • エラーに応じてファイルのアップロードが中断された場合に呼び出される「onerror」

イベントが発生したときにAJAXを使用してサーバー側ロジックを呼び出すには、「a4j:status」または「a4j:jsFunction」を使用します。たとえば、「a4j:status」を使用します。

<rich:fileUpload
        yourParameters="...">
    <a4j:support event="onuploadcomplete" reRender="something" action="#{fileUploadController.setImageFormat(imageFormat)}"/>
</rich:fileUpload>

'a4j:jsFunction'の使用(setPropertyActionListenerの使用方法も示しています。これは、ELリゾルバーがパラメーターを使用したメソッド呼び出しをサポートしていない場合に使用します(BalusCコメントを参照))。

<rich:fileUpload onupload="setImageFormat();"
        yourParameters="..."></rich:fileUpload>

<a4j:jsFunction name="setImageFormat">
    <f:setPropertyActionListener value="#{imageFormat}" target="#{fileUploadController.imageFormat}"/>
</a4j:jsFunction>
于 2011-07-26T14:22:02.900 に答える