PrimeFaces fileupload

空扰寡人 提交于 2019-12-10 20:32:48

问题


I am using jsp/Servlet into a project and I have decided to migrate to JSF using PrimeFaces ,I have faced a problem while trying to upload file using PrimeFaces fileupload control then when I have configured it into web.xml it worked well , the problem now that all old jsp file upload way is not working:

 DiskFileUpload upload = new DiskFileUpload();
 List items = upload.parseRequest(request);

回答1:


Indeed, a HTTP request can be parsed only once. The client ain't going to send it for a second time if you need to parse it twice. Your problem indicates that the PrimeFaces file upload filter is for some reason also invoked on a plain JSP/Servlet request and thus parses the upload for JSF before plain JSP/Servlet get chance to parse it for own use. This should not happen.

You need to map the PrimeFaces file upload filter on JSF requests only, not on plain JSP/Servlet requests. You normally achieve that by mapping it to the FacesServlet.

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

(the <servlet-name> must be exactly the same value as is been used in <servlet> definition of the FacesServlet class; the <filter-name> is obviously exactly the same value as is been used in <filter> definiton of the file upload filter class)

Or, if that old JSP/Servlet file upload approach is been used straight in a JSF page for some unobvious reason, then you need to map the PrimeFaces file upload filter on a more specific URL pattern covering only the pages containing the PrimeFaces file upload component.

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <url-pattern>/upload.xhtml</url-pattern>
</filter-mapping>

(if you've mapped the FacesServlet on for example *.jsf instead of *.xhtml, then you should obviously change the URL pattern to /upload.jsf)

Note that you can specify multiple <url-pattern> entries on a single filter mapping, which is useful for the case that you've multiple pages containing the PrimeFaces file upload component.

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <url-pattern>/upload1.xhtml</url-pattern>
    <url-pattern>/upload2.xhtml</url-pattern>
    <url-pattern>/upload3.xhtml</url-pattern>
</filter-mapping>


来源:https://stackoverflow.com/questions/14025997/primefaces-fileupload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!