[TEEDA-365] マルチパートのフォームでリクエストパラメータの値が Page クラスにバインドされない問題を修正しました. Created: 2007-09-09  Updated: 2007-09-15  Resolved: 2007-09-15

Status: Resolved
Project: Teeda
Component/s: Teeda HTML Example
Affects Version/s: 1.0.10
Fix Version/s: 1.0.11

Type: Bug Priority: Major
Reporter: shot Assignee: koichik
Resolution: Fixed Votes: 0
Labels: None


 Description   

切り出すのが難しかったので、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)しか渡らなくなるのが確認できます。
これはこのサンプルにきちんとファイルアップロードを実装しても同様の動作をします。



 Comments   
Comment by koichik [ 2007-09-15 ]

対応しました.
http://svn.seasar.org/browse/?view=rev&root=teeda&revision=3583

teeda-html-extension の web.xml にはフィルタが次の並びで定義されていました.

  1. dbSessionFilter
  2. encodingfilter
  3. s2filter
  4. hotdeployfilter
  5. extensionfilter
  6. requestDumpFilter
  7. tomahawkFilter

リクエストパラメータを Page クラスにバインドするのは Seasar2 の外部バインディングで行われますが,Seasar2 が認識する ServletRequest は s2filter によって設定されるものです.
しかし,その時点では tomahawkFilter は動いていないため,マルチパートのフォームだとリクエストパラメータを取得することができません.

そこで,tomahawkFilter を s2filter の前に移動すると,マルチパートのフォームを解析した
結果をリクエストパラメータとして取得することができる MultipartRequestWrapper が s2filter に渡るので,S2 の外部バインディングでマルチパートのフォームでもリクエストパラメータを DI できるようになります.

そこで,フィルタの並びを次ように変更しました.

  1. extensionfilter
  2. dbSessionFilter
  3. encodingfilter
  4. tomahawkFilter
  5. s2filter
  6. hotdeployfilter
  7. requestDumpFilter
Generated at Sat Apr 20 17:52:46 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.