@Upload


@Uploadは0.4で入る新機能で、ファイルアップロードを受け取るアノテーションです。
ただし、@Uploadで受け取るときのクラスはorg.t2framework.contexts.Uploadクラスとして決まっているので、
型だけで省略可能です。


こんな感じに型だけでいけます。

	@POST
	@ActionParam
	public Navigation upload(UploadFile file, HttpServletRequest request) {
		System.out.println("file:" + file.getName());
		System.out.println("size:" + file.getSize());
		System.out.println("contentType:" + file.getContentType());
		request.setAttribute("fileUploadResult", file.getName()
				+ " is uploaded.");
		return Forward.to("/jsp/upload.jsp");
	}


@Uploadは画面側にあるname属性で厳密にこのファイルだけ受け取ると
限定する場合に使います。以下の例では、nameがbbbというファイルだけ受け取ります。

	@POST
	@ActionParam
	public Navigation upload3(@Upload("bbb") UploadFile file, HttpServletRequest request) {
		request.setAttribute("fileUploadResult", file.getName()
				+ " is uploaded.");
		return Forward.to("/jsp/upload.jsp");
	}


ちなみに複数受け取る場合はどうするのでしょうか?
その場合は型を配列にします。

	@POST
	@ActionParam
	public Navigation upload2(UploadFile[] files, HttpServletRequest request) {
		StringBuilder builder = new StringBuilder();
		for (UploadFile file : files) {
			System.out.println("file:" + file.getName());
			System.out.println("size:" + file.getSize());
			System.out.println("contentType:" + file.getContentType());
			builder.append(file.getName());
			builder.append(", ");
		}
		builder.setLength(builder.length() - 2);
		request.setAttribute("fileUploadResult", builder.toString()
				+ " is uploaded.");
		return Forward.to("/jsp/upload.jsp");
	}