JSF2.0雖然添加了很多新特性,但是還是沒有官方的對上傳的支持。直接使用
<h:form enctype="multipart/form-data" >
</h:form>
是不行的。因爲multipart/form-data類型的request是解析不了的。
解決方法可以使用filter對request進行包裝(原request似乎是不能更改的,所以藉助包裝),在解析request是可以藉助apache的commons-fileupload組件。
Myfaces剛好給出了這個解決方案的實現:
MultipartFilter+MultipartRequestWrapper(Use commons-fileupload).
原來是打包在一個myfaces-extensions.jar中,現在找不到官方的下載,不過在Tomahawk包裏可以找到(org.apache.myfaces.webapp.filter.*,MultipartFilter似乎都弄到ExtensionsFilter裏了)。
個人覺得舊版的源代碼挺參考價值的,貼出來分享下。
MultipartRequestWrapper:
MultipartFilter: