ajaxified загрузка файла в jsf - PullRequest
       10

ajaxified загрузка файла в jsf

2 голосов
/ 26 января 2012

Я хочу сделать загрузку файла без публикации всей формы.Загрузка файла работает нормально, но вся форма отправлена.Это работает нормально, когда проверка правильна.Но когда обязательное поле пусто, загрузка не работает, и возвращается сообщение об ошибке (обязательное поле отсутствует). Поэтому я попытался ajax загрузить файл (ajax = true).Но тогда загрузка ничего не делает.

Я попытался обойти бу, поместив загрузку файла и другие поля в разные формы.Это работает, но в результате данные, которые вы изменили в других полях, игнорируются при загрузке файла.

Есть предложения?

Вот мой код, который я использую:

<t:inputFileUpload id="fileupload" value="#{prospectDetail.upFile}" size="50" />
<h:outputLabel for="description" value="#{msg.prospectdetail_description}"/>
<mw:inputText id="description" size="40" value="#{prospectDetail.fileDescription}" />
<p:commandButton styleClass="button" value="#{msg.common_upload}" action="#{prospectDetail.upload}" ajax="false" process="@form" onbegin="busyPopup.show()" oncomplete="busyPopup.hide();"/>

1 Ответ

3 голосов
/ 26 января 2012

не возможно загружать файлы по первой версии XMLHttpRequest (которая является основным объектом контроллера запросов Ajax в JavaScript). Вторая версия XMLHttpRequest поддерживает ее, но она не реализована <p:commandButton> (и в настоящее время имеет низкую поддержку браузера).

Поскольку вы, похоже, уже используете PrimeFaces, почему бы вам не использовать собственный компонент <p:fileUpload>? одиночная загрузка или даже примеры автоматической загрузки должны помочь вам (не забудьте удалить фильтр расширений MyFaces из web.xml после добавления фильтра загрузки файлов PrimeFaces) !). <p:fileUpload> PrimeFaces будет автоматически использовать загрузку файла XHR2, когда это возможно.

Я попытался обойти бу, поместив загрузку файла и другие поля в разные формы. Это работает, но в результате данные, которые вы изменили в других полях, игнорируются при загрузке файла.

Если вы поместите компонент в область представления вместо области запроса и вернете null или void из методов действия, тогда это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...