Struts2在上傳文件時(shí)如果文件超過(guò)設(shè)定的大小就會(huì)將“the request was rejected because its size (XXXX) exceeds the configured maximum (XXXX)”類(lèi)似的錯(cuò)誤添加到Action中,也不做任何的國(guó)際化處理,但是有時(shí)這并不是我們想要的錯(cuò)誤信息,我們需要把它替換成我們自己的錯(cuò)誤提示,比如“你上傳的文件(XXX)超過(guò)允許的大?。╔XX)”,那么如何做呢?
???????? 這個(gè)問(wèn)題netfork在http://www.javaeye.com/topic/287800分析的很詳細(xì),他給出了幾種解決辦法。參照他的分析,我們還可以這樣做:
這個(gè)錯(cuò)誤是commons-fileupload組件在上傳的文件超過(guò)我們?cè)O(shè)定的大小的時(shí)候拋出的一個(gè)異常信息。fileUpload攔截器在捕捉到commons-fileupload的異常信息后會(huì)調(diào)用Action的addActionError()方法將他們添加到ActionError中。intercept()方法中的該部分代碼如下:
???????? 所以,要將該信息替換成我們自己的,那么我們可以覆蓋掉ActionSupport的addActionError()方法,在該方法中 “偷梁換柱”即可。假設(shè)我們有個(gè)文件上傳的Action類(lèi)FileUpload,它繼承自ActionSupport類(lèi),其關(guān)鍵代碼則如下:
By:殘夢(mèng)追月