0

也许我在这里遗漏了一些明显的东西,但我似乎无法弄清楚如何使这项工作。

我有 ap:dialog,其中包含一个文本字段、一个选择一个菜单、一个自动完成、一个编辑器和一个文件上传对象。这个想法是用户将在字段中输入一些信息,可选择将一些文件附加到文件上传,然后按下对话框上的提交按钮,该按钮将调用我的支持 bean,进行一些处理并处理将文件获取到他们需要去的地方. 我想使用高级文件上传器,以便用户可以附加多个文件。当用户按下提交按钮时,所有数据都正确提交,除了文件上传器。上传侦听器永远不会被触发。

我在网上做了一些搜索,发现一些引用可能能够通过调用 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 -->
4

1 回答 1

0

您是否添加了文件上传过滤器?您需要在 web.xml 文件中添加一个 fileUpload 过滤器才能将文件上传到服务器。尝试将以下内容添加到您的 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>
于 2012-04-13T00:20:55.560 回答