[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 メーリングリストの案内