2007年8月7日火曜日

Facelets

http://homepage1.nifty.com/algafield/glove.html を参考にとりあえず
動かしてみようと試みるがこれがなかなか動かない。

myfaces などの jar に dtd が入っていないことに気づく。
更新してみると、今度は jsf が古いために起動しない。

[04/Apr/2007:16:19:14] warning ( 1940): JSF1033: Resource injection is DISABLED.

なんだかんだで動作したが、この手のエラーは大変だ。
dtd をいろいろとコピーしてみたが、なかなか。

WebLogic, Geronimo では動作するが、Tomcat ではなぜか画面が真っ白だ...

2007年8月6日月曜日

JSF

Struts, Spring はそこそこやったので、JSF も使えるようになっておこうと挑戦してみる。
これといったよさげな書籍がなかったり、古かったりで少し億劫になっていた。
Sun の開発ツールで GUI で触っていたが、少しやってみたところで飽きてしまっていた。
Sun One Studio Creator (?) 等ではどうしても画面ががちがちのレイアウトに縛られて
いるように見えてしまったのも興味をそいだ原因かも。

基本的には faces-config.xml で ManagedBean と navigation rule 等を定義、ManagedBean
は名前とクラスメイト、スコープを最低限定義、navigation rule は from view id に
対して navigation-case を指定して、action の結果に応じて進める view を決める。
form-action を明示的に指定する場合はいいのだが、指定しないといつも success が
返るのだろうか...

ManagedBean 自体は POJO のようなものでも動くし、EJB や何らかの integration を
つかって Model を呼び出せる。

View は JSP が前提となるのか、Tiles, Velocity 等が使えるのか、外部のプラグイン
等が必要なのか要調査。

デフォルトでは (NetBeans では) Faces Servlet が /faces/* にマップされている。
実際には直下においた jsp はそのままのパスではアクセスできず、/faces/ をつけると
アクセスできる。というか、パスの変換が行われているようだ。
斜め読みだが WEB-INF の下には(デフォルトでは?)アクセスできないので、
配置の仕方に注意。

.jsp が URL になってしまうのは格好が悪い気がしたが、これは
javax.faces.DEFAULT_SUFFIX パラメータで変更できる。このパラメータを
探していると Facelet, Apache Faces 等の技術を見つける。これらも
時間を見て勉強しよう。

Seasor2 も見はじめていたが、S2JSF というコンポーネントでは View に
JSF を使う。web.xml でだいぶカスタマイズして(これくらいは実プロジェクト
では当然?)使っている。