[Seasar-user:14071] Re: [Teeda] te-conditions とは?

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 5月 3日 (土) 07:00:07 JST


小林 (koichik) です.

Date:    Sat, 03 May 2008 01:22:16 +0900
From:    Taiki Matsuyama <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14070] Re: [Teeda] te-conditions とは?

> 不正な動作をする場合があるというのが少し不安ですが、

<div id="isFoo">
  <input type="text" id="bar" />
</div>
<div id="isNotFoo">
  <input type="text" id="baz" />
</div>

というような画面があって,bar・baz とも
@Required が付けられるとします.

最初に表示した際に foo が true だと,
bar が必須です.
次に表示した際に foo が false だと,
baz が必須です.

ここで最初に表示した画面に戻ってサブミット
したとします.
スクリプトが効いていれば,画面を表示したときの
状態が復元できるので,foo が true となります.

しかし,スクリプトが無効だと,直近では foo が
false なので baz が必須になりますが,テキスト
フィールドを表示していないので入力のしようがなく,
validation でエラーになってしまいます.
また,入力された bar は捨てられてしまいます.

このように,表示したときの condition の状態と,
サブミットされたときの condition の状態が
異なると,入力値が捨てられてしまったり,意図しない
validation が行われてしまったりします.

> 携帯サイトの場合はどちらにせよスクリプトが使用できない
> ことの方が多いと思うので、それならば出力されるHTML が
> 少ない方がありがたいです。

そうですね.
とはいえ,Teeda Extension は PRG パターンなど
携帯には不向きというか,あまり考慮していないので,
別のフレームワークを選ぶ方が無難という気がします.

> te-conditions のvalue の内容が
> 結構大量になる場合があるので、携帯だとつらいです。

一つのページ内で condition をたくさん使っていると
いうことでしょうか?
それは画面を分けた方がいいのではないかと.
[Seasar-user:14061] の例だと,ディティールを
表示する画面と表示しない画面を別にするなど.

スクリプトを出力しないようにすれば全て解決とも
思えないので,「携帯では condition を使わない」
というのが無難かと.

> ただ、できるなら、ページ単位(HTML単位)で、スクリプトの
> 出力が制御できるとありがたいです。1つのWebアプリケーションで、
> PC用、携帯用の両方のページがあるので。

これは厳しい.

> ちなみに、te-conditions で保持される状態というのは、具体的には
> どのような内容になっているのでしょうか?MIME64デコードしてみれば
> いいのでしょうが、連休に入ってしまって手元に開発環境がないので。

condition で使われたプロパティ名と値の Map です.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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