我使用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>