[Seasar-user:9399] Re: [Teeda]Teeda Ver1.0.8
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 7月 24日 (火) 16:00:22 JST
小林 (koichik) です.
Date: Tue, 24 Jul 2007 11:09:59 +0900
From: r.m <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:9386] Re: [Teeda]Teeda Ver1.0.8
> 今、includeで色々試していますが、かなり困難な状況です。
> iframeを使い、スコープを維持する方法を考えたほうがいいかも知れません。
<iframe> を使って問題を回避する方法が分かりました.
<iframe> の src 属性に指定する URL に
newwindow=true
というパラメータを指定してください.
[Seasar-user:9367] で頂いたサンプルだと,
<iframe height="50" width="50" id="test" scrolling="no" frameborder="0" src="./test2.html?newwindow=true" />
となります.
これにより,<iframe> の中で表示されるページは
外側のページとは別のスコープで管理されるようになります.
当然,サブアプリケーションスコープのプロパティ等も
引き継がれなくなるので,必要な情報は明示的にパラメータで
引き渡すようにしてください.
Date: Tue, 24 Jul 2007 11:13:57 +0900
From: r.m <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:9387] Re: [Teeda]Teeda Ver1.0.8
> >そのため,test.html のフォームがサブミットされた
> > 際に dispOrderNum は元に戻らず,初期値の false に
> > なります.
> >
> > dispOrderNum が false だと Condition の条件が
> > 成立しないため,その中の <input> 要素である
> > orderNum にリクエストパラメータの値が設定されず,
> > null のままというのが今回の起きていることでは
> > ないかと思います.
>
> この部分ですが、submitされた際、dispOrderNum がTrueになっていることを確認しています。
> 実際には、ValidationをPage内で実装していて、
> if(dispOrderNum && orderNum == null) の条件の時にエラーにしていて、実際エラーに
> なってしまいます。
自分が書いたのは ApplyRequestValues というフェーズでの
動作になります.
本来ならその時点では Teeda が管理しているセッション情報の
Page スコープから dispOrderNum の値が復元されるはずですが,
その直前に <iframe> からのリクエストがあったためにその
情報が消えてしまい,初期値の false のままとなっています.
この時の dispOrderNum の値 (false) で Condition が判定され,
false なので orderNum にリクエストパラメータの値は設定
されません.
dispOrderNum 自身は Conditon の外にあるのでリクエスト
パラメータから値が設定され,true になります.
Validator が呼び出されるのはその後の ProcessValidation
フェーズなので,dispOrderNum は true になります.
そんなわけで (どんなわけで?),dispOrderNum は実は
HTML に <input type=hidden"> を持たなくても
適切に動作するはずです.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内