Struts2のサーバで、サイズ制限を超えたファイルがポストされたことを検出するしっくりこない方法
ActionSupportを継承したクラスでvalidate()メソッドを継承し、getActionerrors()の返す文字列の中に特定のパターンのものが含まれているか否かをチェックする。
ファイルアップロード時にエラーが起きてもその詳細な理由を拾う素直な手段が見つからなかったので試行錯誤した結果がこんなことに…
private static Pattern tooLargeFilePattern = Pattern.compile("the request was rejected because its size \\((\\d+)\\) exceeds the configured maximum \\((\\d+)\\)"); @Override public void validate() { super.validate(); if (hasActionErrors()) { for (String error : getActionErrors()) { Matcher m = tooLargeFilePattern.matcher(error); if (m.matches()) { throw new TooLargeFileError(); } } } }
ほかに何かやりようがあるんじゃないかと思うけども。