0

我正在尝试在上传文件后重新启用丰富的控制按钮: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

有什么帮助吗?

谢谢

[编辑]

我找到了问题,但还没有解决方案!我有一个多行表,所以我有多个丰富的:fileUpload。如果我只显示一行并且它有效。

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 回答