- - 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
