[Seasar-user:19520] [SAStruts] SizeLimitExceededException発生時のレスポンスについて

田嶋隆寿 [E-MAIL ADDRESS DELETED]
2010年 3月 19日 (金) 23:56:52 JST


田嶋です。
いつもお世話になっております。

SAStrutsのファイルアップロードにおけるSizeLimitExceededException発生時に、
画面が表示されなくなるというトラブルが起こり、困っております。
環境はSAStruts1.0.4-sp8、Tomcat6.0.20です。

原因を調査したところ、ファイルサイズ超過によるアップロードエラーが起きた場合に、
エラーメッセージを表示する画面サイズが大きすぎると発生するようでした。

以下に現象を再現するためのソースを記述します。

アクションクラスです。

public class IndexAction {

	@ActionForm
	@Resource
	protected UploadForm uploadForm;

	@Resource
	protected HttpServletRequest request;

	@Resource
	protected ServletContext application;

	@Execute(validator = false)
	public String index() {
		UploadUtil.checkSizeLimit(request);
		return "index.jsp";
	}

	@Execute(input = "index.jsp")
	public String upload() {
		upload(uploadForm.formFile);
		return "index.jsp";
	}

	protected void upload(FormFile file) {
		String path = application.getRealPath("/WEB-INF/work/" + file.getFileName());
		UploadUtil.write(path, file);
	}
}

フォームクラスです。

public class UploadForm {

	public FormFile formFile;

}

JSPです。

<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Upload</title>
<link rel="stylesheet" type="text/css"
	href="${f:url('/css/global.css')}" />
</head>
<body>
<h1>Tutorial: Upload</h1>
<html:errors />
<s:form enctype="multipart/form-data">
	<html:file property="formFile" />
	<br />
	<s:submit property="upload" value="アップロード" />
</s:form>
<c:forEach begin="0" end="10">
1234567890<br />
</c:forEach>
</body>
</html>

私の環境だと、JSPのforEachタグのend属性の値が10の場合は、
SizeLimitExceededExceptionが発生してもエラーメッセージが表示されるのですが、
end属性の値が1000の場合は、SizeLimitExceededException発生後にレスポンスが返らない状態になります。
何かの設定でレスポンスのサイズの上限が決まっていたりするでしょうか?


Seasar-user メーリングリストの案内