[Seasar-user:9374] Re: [Teeda]Teeda Ver1.0.8

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 7月 23日 (月) 22:00:35 JST


小林 (koichik) です.

Date:    Mon, 23 Jul 2007 20:09:43 +0900
From:    r.m <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:9367] Re: [Teeda]Teeda Ver1.0.8

> どうしても、iframeだとうまくいかないため、サンプルソースを添付します。

状況が分かりました.
サンプルの test.html から <iframe> を削除して,
ブラウザで表示した後にブラウザで test2.html を
直接アドレス指定して表示,test.html に戻って
サブミットしても同じ現象になります.

つまり,<iframe> に限らず,表示とサブミットの間に
余計なリクエストが Teeda に渡るのがまずいようです.

サンプルの test2.html は対応する Page クラスが
ありませんが,もし実際のシステムでもそうなのであれば
test2.html の拡張子を変更して test2.htm とすれば
正しく動作します.
<iframe> の中に表示するのが画像みたいなものなら
これが一番簡単な対応ですね.


Teeda は Page クラスのプロパティを引き継ぐために
様々なスコープの情報をセッションに保持しています.
このサンプルの場合,Condition の条件である
dispOrderNum が Page スコープとしてセッションに
保持されます.
<iframe> が存在しなければ,test.html のフォームが
サブミットされた際にセッションから dispOrderNum が
戻されます.

しかし,<iframe> があると test2.html がリクエスト
されるため,Page スコープから TestPage の情報が
なくなってしまいます (Test2Page が存在しないので
Page スコープは空になります).
そのため,test.html のフォームがサブミットされた
際に dispOrderNum は元に戻らず,初期値の false に
なります.

dispOrderNum が false だと Condition の条件が
成立しないため,その中の <input> 要素である
orderNum にリクエストパラメータの値が設定されず,
null のままというのが今回の起きていることでは
ないかと思います.
# 一応 Teeda コミッタの一員なのですが全然
# 詳しくないので不正確かも.

Teeda で対応できることとして,Page クラスに
関連づけられていない HTML がリクエストされた
際には,Page スコープを元のまま維持するように
することができれば今回の件は解決できるような
気がします.

しかし,可能であれば <iframe> を使わないように
変更していただくのがよいかと思います.
# XHTML1.1 では廃止された要素ですし.

--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内