- - PR -
トマホーク使用のファイルアップロード時の例外をキャッチ
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-14 18:51
件名のとおりトマホークを使用しファイルのアップロード処理を実装していますが、
設定したファイルサイズを超えた場合、例外をキャッチしたいのですが、 どうしたらできますか? サイズを超えてしまうと自画面に戻って来ますが、 何もなかったかのように初期化されてしまいます。 そこで例外をキャッチできればなと思いますが どなたかご教授ください。 お願いいたします。 | ||||
|
投稿日時: 2007-08-14 22:46
なんですかトマホークって?
| ||||
|
投稿日時: 2007-08-14 23:01
インギさん
> なんですかトマホークって? jsf拡張のtomahawkのことです。 カタカナですみませんでした。 | ||||
|
投稿日時: 2007-08-14 23:33
あれって確かフィルタでやってたよな、
って思って調べてみました。 org.apache.myfaces.webapp.filter.ExtensionsFilterから辿って、 MultipartRequestWrapperの88行目に、
とコメントがあるので無理っぽい気がします。 全然細かく見てないので間違ってるかもしれませんが。 | ||||
|
投稿日時: 2007-08-15 00:29
あしゅさん
返信ありがとうございます。 アドバイスを参考にこんなものを発見しました。 ★ソース DiskFileUpload o = new DiskFileUpload(); o.setSizeMax(-1); o.setSizeThreshold(1024); o.setRepositoryPath("/tmp"); o.setHeaderEncoding("Windows-31J"); List list = o.parseRequest(request); // FileItem のリスト for(Iterator it = list.iterator(); it.hasNext() ![]() FileItem param = (FileItem)it.next(); if(!param.isFormField()) continue(); out.println(param.getFieldName() + ": " + param.getString()); } 例外をキャッチできないのであれば こんなようなソースを自分で実装する方法しかないということですね。 org.apache.myfaces.webapp.filter.ExtensionsFilter#parseRequestと似たようなことを していますが、サブミット後、バッキングビーンにバリューバインディングされる前に ファイル処理が走ってしまい結果、サイズオーバーになった場合は 有無を言わずに自画面に戻ってしまいます。 自画面に戻る前に何かハンドラーやフェーズリスナーなどで対応出来ないでしょうか? <!-- Upload用フィルタ− --> <filter> <filter-name>extensionsFilter</filter-name> <filter-class> org.apache.myfaces.component.html.util.ExtensionsFilter </filter-class> 〜中略〜 このExtensionsFilter フィルタークラスを自分で拡張して 例外部分を自分で実装する方法しかないのでしょうか? そもそも拡張しない方がいいクラスなのでしょうか? |
1