Возможно, мне не хватает чего-то очевидного здесь, но я не могу понять, как это сделать.Отправка p: fileupload с остальной формой формы
У меня есть диалог p:, который содержит текстовое поле, одно меню, автозаполнение, редактор и объект загрузки файлов. Идея состоит в том, что пользователь вводит некоторую информацию в поля, необязательно прикрепляет некоторые файлы к файловой загрузке, а затем нажимает кнопку отправки в диалоговом окне, которое будет вызывать мой бэк-файл, выполнять некоторую обработку и обрабатывать получение файлов там, где им нужно идти , Я хотел бы использовать расширенный загрузчик файлов, чтобы пользователи могли прикреплять несколько файлов. Когда пользователи нажимают кнопку отправки, все данные передаются правильно, за исключением файлового загрузчика. Слушатель загрузки никогда не запускается.
Я сделал несколько поисков в Интернете и нашел ссылки на возможную возможность загрузки загрузки с вызовом wigdetVar.upload(), но это просто вызывает ошибку javascript, и дальнейший поиск предполагает, что функциональность может быть недоступна ,
Итак, вопрос в том, как я могу отправить файлы вместе с остальной формой формы из кнопки отправки? Далее следует код для диалога.
<p:dialog widgetVar="newthreaddialog" modal="true" header="New Thread for #{collaborationBacking.patientName}" dynamic="true"
resizeable="false">
<div class="whitebox">
<h:form id="newthreadform" enctype="multipart/form-data">
<p:panelGrid>
<p:row>
<p:column>
<p:messages/>
<h:outputLabel for="threadtitle" value="Thread Title: "/>
<p:inputText id="threadtitle" label="Thread Title" value="#{newCollabThreadBacking.title}" required="true"/>
</p:column>
<p:column>
<h:outputLabel for="threadtype" value="Type: "/>
<h:selectOneMenu id="threadtype" label="Thread Type" value="#{newCollabThreadBacking.type}">
<f:selectItems value="#{newCollabThreadBacking.typeList}"/>
</h:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<h:outputLabel for="addressedTo" value="To: "/>
<p:autoComplete id="addressedTo" value="#{newCollabThreadBacking.addressedTo}"
completeMethod="#{newCollabThreadBacking.completeAddress}"
var="practice"
itemValue="#{practice}"
itemLabel="#{practice.name}"
converter="practiceConverter"
forceSelection="true"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:editor value="#{newCollabThreadBacking.content}" label="Message Content" required="true"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:fileUpload widgetVar="uploader" fileUploadListener="#{newCollabThreadBacking.fileUpload}"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<span class="submit">
<p:commandButton id="submitthread" value="Submit" action="#{newCollabThreadBacking.saveThread}"
oncomplete="newThreadResult(xhr, status, args)"
onclick="uploader.upload();"
process="@form" update="@form"/>
</span>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</div>
<p:ajax event="close" listener="#{collaborationBacking.reloadThreads}" update="threadtable newthreadform"/>
</p:dialog> <!-- newthreaddialog -->
Да, я действительно добавлял это. И прослушиватель выгрузки вызывается, если я нажимаю кнопку «Загрузить», но не при отправке формы. – moneyt
@moneyt Могу ли я увидеть ваш код бэкбона? Попробуйте изменить область действия – fareed
Извините, я почувствовал, что сбросил этот набор кода. Чтобы решить проблему, я автоматически загрузил загрузку файлов во временное место, а затем обработал запись формы, перемещая временные файлы в их постоянный дом. Я не думаю, что у меня есть копия этого кода в управлении версиями где угодно. Спасибо за вашу помощь. – moneyt