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