ついにS2JSFに

ついにS2JSFに踏み込むときがやってきた。

素のJSFを捨てたのはなぜか?(おおげさ
今のところ、あまり強い思いはないんだけど、とりあえずは以下のような理由。

  • コンポーネントをFacesContextとS2Containerで2重管理するのはいや。どっちに登録されたっけ?とか面倒。バグの元。
  • S2JSF: HTMLでプレビュー可能なのが魅力。
    • JSF: panelGroupであまり考えずに機械的にレイアウトできるのも魅力だけど、HTMLの簡単さには勝てず。
  • managed beanやlogicに自動DIが可能。
    • managed beanの管理をS2ContainerがするのでDI,aspectがそのままかかる。
    • JSFにmanaged bean管理をさせると、途中で明示的にS2Containerからのコンポーネント取得をはさまないと、それ以降のLogicなどにDIができない。
  • 単に使ってみたかった。


とりあえず、作ってたサンプルをS2JSF化するのに成功。

メモ。

  • inputタグでtype属性がないと、managed beanに値がわたらない。orz
  • 実行系のmanaged bean(くーす/goyaではActionと呼ぶ)は、インタフェース化することは必須ではない。実装上の規約が明確になるというだけ。
  • managed bean → Logicへは引数でDtoを渡したほうが良い。直接LogicでDIしてもらうのは、可能だけれど…。
  • JSFの仕組みとして、greacemonkeyなどでクライアント側で勝手にフォームを追加された場合に、予期しないmanaged beanのプロパティに値を設定されたりアクションを実行されたりすることを防止しているか?自力でやる必要があるのか?

10/4追記:
メモの最後について。
サーバ側で構築したUIコンポーネントに対して値の設定やアクション実行がなされるわけだから、UIコンポーネントに対応させていない裏のmanaged beanのプロパティやメソッドは実行できないようになっているようです。