我使用JSP/Servlet的到一个项目,我已经决定使用PrimeFaces迁移到JSF,而尝试使用PrimeFaces FileUpload控件,然后上传文件时,我已经配置到web.xml中我所面临的一个问题是现在的问题是,所有旧的jsp文件上传方式都不起作用:PrimeFaces文件上传
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
我使用JSP/Servlet的到一个项目,我已经决定使用PrimeFaces迁移到JSF,而尝试使用PrimeFaces FileUpload控件,然后上传文件时,我已经配置到web.xml中我所面临的一个问题是现在的问题是,所有旧的jsp文件上传方式都不起作用:PrimeFaces文件上传
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
事实上,一个HTTP请求只能被解析一次。如果您需要解析两次,客户端不会再次发送它。你的问题表明PrimeFaces文件上传过滤器是出于某种原因还援引在一个普通的JSP/Servlet的请求,因此前平原JSP/Servlet的就有机会解析它自己使用解析为JSF上传。这不应该发生。
您需要映射只,而不是简单的JSP/Servlet的请求JSF请求PrimeFaces文件上传过滤器。你通常通过它映射到FacesServlet
实现这一目标。
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
(所述<servlet-name>
必须完全如在FacesServlet
类的<servlet>
定义被使用的值相同;所述<filter-name>
显然是完全一样在<filter>
definiton文件上载过滤器类的被使用的值相同)
或者,如果旧的JSP/Servlet的文件上传方法是在JSF页面直接用于一些不明显的原因,那么你需要的PrimeFaces文件上传过滤图上只覆盖页面更具体的URL模式包含PrimeFaces文件上传com Ponent(波纳恩特)。
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<url-pattern>/upload.xhtml</url-pattern>
</filter-mapping>
(如果你已经映射到例如*.jsf
,而不是*.xhtml
的FacesServlet
,那么很显然你应该改变URL模式/upload.jsf
)
请注意,您可以指定多个<url-pattern>
条目单个过滤器映射,这对于您有多个包含PrimeFaces文件上传组件的页面很有用。
<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>