Teeda 1.0.8リリース


遅くなっちゃいましたが、Teeda 1.0.8をリリースします。

http://teeda.seasar.org/ja/


Teeda 1.0.7からの変更点は以下のとおりです。

□Bug

  • [TEEDA-241] - [Seasar-user:5910] Validationエラー後の条件分岐(Condition)
  • [TEEDA-299] - Grid内で使用したチェックボックスがOFFにならない
  • [TEEDA-306] - サブミット連打対策が不十分だったのを修正
  • [TEEDA-319] - InputCommaTextでfractionが反映されない
  • [TEEDA-324] - ForEachでaaaItemsのaaaプロパティが存在する場合にaaaItemsが更新されない
  • [TEEDA-328] - ポートレット環境でaタグ内のspanタグでLabelが使えない
  • [TEEDA-331] - ポートレット環境で、prerender でページを移動できない場合がある

□Improvement

  • [TEEDA-276] - SelectOneMenuでsizeが指定できない。
  • [TEEDA-318] - インクルードしているページに入力された値が、遷移先に渡らない

□New Feature

  • [TEEDA-327] - OutputTextにてspanタグをレンダリングしないオプション機能を作成する
  • [TEEDA-333] - パスワードチェック等で使うようなEqualsValidatorを作成する
  • KumuによるJavaScriptでのレイアウト機能追加


□Task


ダウンロードはこちらからどうぞ.

Maven2からのご利用はこちらを参照ください.


あとはJIRAに載ってはいないけど、他にも改善項目や

バグ修正をたくさんしています.なにかJIRAの項目すくねえw

特にAjaxまわりは格段に使いやすくなったはずです.

ぜひバージョンアップして頂き、使ってみてくださいm(_ _)m

よろしくお願いします.



P.S.1.0.8は結構な難産でしたが無事一区切りできて、ほっとしています.

まだまだ修正した方が良い点あると思うので、1.0.9までに

なるべく多くの修正をする予定でいます.

1.0.9のリリース予定は9月初旬を予定しています.


また、リリース関係で少し間に合っていない残作業は明日やります.

Teedaのデフォルトスコープについて


Teedaはデフォルトで同じサブアプリケーション内で同一プロパティ名ならば、

値を引き継ぐ機能があります.

これは非常に便利な機能で、サブアプリケーションスコープの機能の一つですが、

私の説明が悪かったのか@SubapplicationScopeと同じものだという誤解を招いていたようです.



Teedaのデフォルトのスコープでは、確かに同一プロパティであれば引き継ぐ機能が

ありますが、それは通常のWebアプリ同様input属性のもののみです.

例えば下記のようにspanのコンポーネントが値を持っていたとしましょう.

<span id="hoge">dummy</span>


このコンポーネントはinputコンポーネントではないため、デフォルトのスコープでは値は引き継がれません.

JSF言葉で言えば、リクエストにのってこないのでUIコンポーネントにdecodeされない.)

引き継ぐにはどうすれば良いのでしょうか.お察しのとおり、hiddenで値を持たせて引き継ぐようにしてください.

<span id="hoge">dummy</span>
<input type="hidden" id="hoge-hidden" />


これでデフォルトスコープでも引き継がれるようになります.


では、明示的に@SubapplicationScopeとつけた場合は何が違うのでしょうか.

public class HogePage {
  @SubapplicationScope
  private String hoge;
}
<span id="hoge">dummy</span>


この場合はspanでも値は引き継がれるようになります.

@SubapplicationScopeをつけた場合、そのプロパティは次のページへリダイレクトして

Pageの状態をセットアップしている最中に復元されるようになります.

同一サブアプリケーション内から出ると、SubapplicationScopeの管理領域から削除されます.



どうしてこのようにしているのかと言うと、@SubapplicationScopeは通常のWebアプリからすると

若干違うキモい動き(spanなどのinputではないコンポーネントでも値が引き継がれる)になるため、

ユーザの方で明示的な指定が必要としているからです.