Servlets PrimeFaces文件上载
我在一个项目中使用jsp/Servlet,我决定使用PrimeFaces迁移到JSF,我在尝试使用PrimeFaces fileupload控件上载文件时遇到了一个问题,然后当我将其配置为web.xml时,它工作得很好,现在所有旧的jsp文件上载方式都不起作用了:Servlets PrimeFaces文件上载,servlets,jsf-2,primefaces,jspx,Servlets,Jsf 2,Primefaces,Jspx,我在一个项目中使用jsp/Servlet,我决定使用PrimeFaces迁移到JSF,我在尝试使用PrimeFaces fileupload控件上载文件时遇到了一个问题,然后当我将其配置为web.xml时,它工作得很好,现在所有旧的jsp文件上载方式都不起作用了: DiskFileUpload upload = new DiskFileUpload(); List items = upload.parseRequest(request); 实际上,HTTP请求只能解析一次。如果需要对其进行
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
实际上,HTTP请求只能解析一次。如果需要对其进行两次解析,客户端将不会再次发送它。您的问题表明,由于某种原因,PrimeFaces文件上载过滤器也会在普通JSP/Servlet请求上被调用,从而在普通JSP/Servlet有机会解析供自己使用之前解析JSF的上载。这不应该发生 您只需要在JSF请求上映射PrimeFaces文件上载过滤器,而不需要在普通JSP/Servlet请求上映射。通常通过将其映射到
FacesServlet
来实现
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
(如果您已经将FacesServlet
映射到了例如*.jsf
而不是*.xhtml
,那么显然应该将URL模式更改为/upload.jsf
)
请注意,您可以在单个筛选器映射上指定多个
条目,这对于包含PrimeFaces文件上载组件的多个页面非常有用
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<url-pattern>/upload.xhtml</url-pattern>
</filter-mapping>
<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>
PrimeFaces文件上载筛选器
/上传1.xhtml
/上传2.xhtml
/上传3.xhtml