BP Study#20 Wicket for Beginers

株式会社ビープラウド
発表者はid:t_yano
本体はグラサン巫女で、会場に来ているのは式神(自称)

Wicketの特徴

オブジェクト指向

  • データと振る舞いのパッケージング
    • 状態を保てる
  • 拡張少しだけ動作の違うものを効率的に作れる。
  • Ruby on Railsは便利だけどCGI/Servletと同じ手続き型パラダイムから脱却していない。

コンポーネントとモデル

  • コンポーネント自体は値を保持しない
  • 値はどこにあっても良い
  • モデルが値のある場所を知っている
    • ロケータ(Locator)
  • コンポーネントにデータをやり取りするやり方を格納する
  • プッシュからプルへ
    • ページ→コンポーネント→データという順にpullしていく
      • それぞれの矢印の内容:表示していいのか聞く、何を表示するか聞く
  • Pageオブジェクトのライフサイクルはセッション単位ブラウザウィンドウ単位
    • セッションの下にブラウザウィンドウがぶら下がっている
    • シリアライズしてファイルに保存するのでメモリがあふれる訳じゃない
    • GAE/Jの場合はメモリ保存にしておけば勝手にBigTableに突っ込んでくれるのでスケールしまくる(ファイル保存する設定にしておくと動かない)
    • ブラウザウィンドウ単位でどうやって管理するか?→URLの最後のゴニョゴニョで管理している。(こんなのhttp://www.physalis.net/senryu/?wicket:interface=:1:1:::)
      • 一時生成ページはこうだけどブックマーカぶるなページはまた別

JSP vs Java

JSPはクソのような言語
再帰的に階層メニューを作るとかいったことをやるのは無理だし、階層が3層とかでも普通に死ねる。
Wicketならコンポーネントに渡したデータの要素が子供を持っていた場合に、
同じコンポーネントに子孫分のデータを渡して追加していくと行った。
コンポジットパターンを使った再帰的なコンポーネントを使えるので、余裕しゃくしゃくでできる。

Ajax

  • 部分更新やタイマーといった機能を実現するためにAjaxを使用している。
  • Ajaxを使用したコンポーネントのclassが用意されている。
    • 自分で作っても良い。
  • 依存するJavaScriptライブラリのhead要素内での読み込み等をコンポーネントに解決させることもできる。

Django

考え方がDjangoと似てる、Djangoの人はWicketを触るべきと右隣が言ってた。