Визуализация p: commandButton после загрузки файла p: fileUpload - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть страница с 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 Ответ

8 голосов
/ 21 декабря 2011

Просто используйте атрибут update так же, как и для всех других компонентов ajax PrimeFaces.

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

Я, конечно, предполагаю, что вы установили btnRendered на true внутри handleFileUpload метода.

Обратите внимание, что вы не можете установить для него идентификатор самой кнопки, просто потому, что она отсутствует в дереве HTML DOM, когда btnRendered по умолчанию равен false. Именно JavaScript выполняет обновление в дереве HTML DOM на основе полученного ответа Ajax. Если вы хотите обновить только кнопку, а не форму, поместите ее в другой компонент, который всегда присутствует в дереве HTML DOM:

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

и обновите его следующим образом

<p:fileUpload update="btnValidar" />

Смотри также:

...