上传文件p:fileUpload后渲染p:commandButton

时间:2011-12-21 16:38:52

标签: jsf button file-upload rendering primefaces

我有一个页面带有 p:fileUpload p:commandButton ,第一次访问该页面时,该按钮应该被隐藏,并且在文件上传后按钮应该呈现。我的代码如下所示,关于如何实现这一点的任何想法?

    <h:form enctype="multipart/form-data" >

        <p:fileUpload
            fileUploadListener="#{fileUploadController.handleFileUpload}"
            mode="advanced"
            multiple="true"
            sizeLimit="2000000000"
            allowTypes="/(\.|\/)(txt|csv)$/"
            required="true"
            label="Seleccionar"
            uploadLabel="Subir a servidor"
            cancelLabel="Cancelar">
        </p:fileUpload>

        <p:commandButton id="btnValidar" value=" Validar "
                         rendered="#{fileUploadController.btnRendered}"
                         style="margin-left: 430px;"/>

    </h:form>

1 个答案:

答案 0 :(得分:8)

只需使用update属性,就像使用其他所有PrimeFaces ajax组件一样。

<p:fileUpload update="@form" />

我当然假设您已在btnRendered方法中将true设置为handleFileUpload

请注意,您无法将其设置为按钮本身的ID,因为当btnRendered默认为false时,它不会出现在HTML DOM树中。它就是JavaScript,它根据检索到的Ajax响应在HTML DOM树中执行更新作业。如果您想单独更新按钮而不是表单,请将其包装在HTML DOM树中始终的另一个组件中:

<h:panelGroup id="btnValidar">
    <p:commandButton rendered="#{fileUploadController.btnRendered}" />
</h:panelGroup>

并按如下所示更新

<p:fileUpload update="btnValidar" />

另见: