-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major
-
Affects Version/s: 1.0.10
-
Component/s: Teeda HTML Example
-
None
切り出すのが難しかったので、teeda-html-exampleを基にして再現させてみました。
なぜかteeda-html-example-1.0.8では(JavaScriptが)うまく動作しなかった
のでteeda 1.0.11-RC1のteeda-html-exampleで再現させました。
foreach/forEachResult.htmlのformにenctype="multipart/form-data"を記述しただけで
clickedIndexに画面内で最大の値(5)しか渡らなくなるのが確認できます。
これはこのサンプルにきちんとファイルアップロードを実装しても同様の動作をします。
対応しました.
http://svn.seasar.org/browse/?view=rev&root=teeda&revision=3583
teeda-html-extension の web.xml にはフィルタが次の並びで定義されていました.
リクエストパラメータを Page クラスにバインドするのは Seasar2 の外部バインディングで行われますが,Seasar2 が認識する ServletRequest は s2filter によって設定されるものです.
しかし,その時点では tomahawkFilter は動いていないため,マルチパートのフォームだとリクエストパラメータを取得することができません.
そこで,tomahawkFilter を s2filter の前に移動すると,マルチパートのフォームを解析した
結果をリクエストパラメータとして取得することができる MultipartRequestWrapper が s2filter に渡るので,S2 の外部バインディングでマルチパートのフォームでもリクエストパラメータを DI できるようになります.
そこで,フィルタの並びを次ように変更しました.