0

ファイルをアップロードした後、rich:uploadFile でコントロール ボタンを再度有効にしようとしています。

私は持っている:

<rich:panel id="fileuploader">
    <script type="text/javascript">alert("rendering");</script>
<rich:fileUpload fileUploadListener="#{fileUploadBean.listener}"
            maxFilesQuantity="1"   id="upload" autoclear="true"
            acceptedTypes="jpg, gif, png, bmp" >
            <a4j:support event="onuploadcomplete" reRender="fileuploader" />
    </rich:fileUpload>
    <a4j:commandButton value="reRender" reRender="fileuploader"/>
</rich:panel>

パネルが再レンダリングされていることを確認するスクリプトを配置します。uploadFile コントロールを再レンダリングするか、ページ全体を更新できることを読みました。ファイルをアップロードした後、controlButton が無効になり、commandButton で再レンダリングを行っても、コントロール ボタンは無効のままです。しかし、ページを完全に更新すると、コントロールは問題ありません。

リッチフェイス3.3.3を使用しています

何か助けはありますか?

ありがとう

[編集]

問題は見つかりましたが、解決策はまだありません。複数の行を持つテーブルがあるため、複数の rich:fileUpload があります。1行だけ表示すればうまくいきます。

4

1 に答える 1

1

私は同じ問題に直面しました。それを解決するために、コントロールを保持するパネルではなく、コントロールを再レンダリングしました。このアプローチが機能するかどうかはわかりません(しかし、私にとっては機能します):

編集:私のコードを変更しました。おそらく、私には見えない違いがあります。

<rich:fileUpload id="fuArchivoExcel" maxFilesQuantity="1"
    listHeight="60px" listWidth="350px" immediateUpload="false"
    fileUploadListener="#{cargaDocumentoRequerido.subeArchivo}"
    addControlLabel="Seleccionar archivo" uploadControlLabel="Subir"
    clearAllControlLabel="Borrar archivos"
    clearControlLabel="Borrar archivo" stopControlLabel="Detener" autoclear="true">
    <f:facet name="label">
        <h:outputText value="Se han subido {_KB}KB de {KB}KB" />
    </f:facet>
    <a4j:support event="onuploadcomplete" reRender="fuArchivoExcel,pnlMensajesError"
        oncomplete="finCargaArchivo('#{cargaDocumentoRequerido.mensaje.idMensaje}', '#{cargaDocumentoRequerido.mensaje.descMensaje}')" />
</rich:fileUpload>

編集(コメントに基づく)

<rich:fileUpload>のようにリピーターの内部で使用する場合<rich:dataTable>は、単一のコンポーネントではなく、リピーター コンポーネントを再レンダリングする必要があります。これで問題は解決します。

于 2012-07-12T18:35:34.710 に答える