2012-04-12 3 views
0

Возможно, мне не хватает чего-то очевидного здесь, но я не могу понять, как это сделать.Отправка 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 --> 

ответ

0

Вы добавили фильтр для загрузки файлов? вам нужно добавить фильтр fileUpload в файл web.xml, чтобы иметь возможность загружать файлы на сервер. Попробуйте добавить следующее к вашему web.xml

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 
+0

Да, я действительно добавлял это. И прослушиватель выгрузки вызывается, если я нажимаю кнопку «Загрузить», но не при отправке формы. – moneyt

+0

@moneyt Могу ли я увидеть ваш код бэкбона? Попробуйте изменить область действия – fareed

+0

Извините, я почувствовал, что сбросил этот набор кода. Чтобы решить проблему, я автоматически загрузил загрузку файлов во временное место, а затем обработал запись формы, перемещая временные файлы в их постоянный дом. Я не думаю, что у меня есть копия этого кода в управлении версиями где угодно. Спасибо за вашу помощь. – moneyt

Смежные вопросы