Spring MVCを使用して、フォームでアップロードされているファイルを受信しています。これは、リクエストを受け取り、発生する可能性のある例外を処理するコントローラーです。
@RequestMapping(method = RequestMethod.POST,
headers = {"content-type=multipart/form-data"},
produces = "application/xml")
public @ResponseBody MyStuff processFormUpload( @RequestParam("file") CommonsMultipartFile file) throws
//return beautiful xml response generated from the input file;
}
@ExceptionHandler(Exception.class)
public ModelAndView exceptionHandler(Exception ex, HttpServletResponse response) {
//return pretty exception page;
}
これは、ファイル リゾルバーを初期化する方法です。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000"/>
</bean>
応答の生成中に例外が発生した場合でも、すべてが美しく機能します。唯一の問題は、誰かがmaxUploadSizeより大きいファイルをアップロードしようとした場合です。この場合、exceptionHandler は例外をキャッチせず、サービスは醜い内部エラー 500を返しますMaxUploadSizeExceededException
。
その種の例外もキャッチするように Web アプリを構成するにはどうすればよいですか? @ExceptionHandlers
プロジェクト構造をあまり変更せずに使いたいです。