JSFについて
最近再びサーバサイドJavaに触り始めている。
特にJSFである。
Sun Java Studio Creatorを入れていろいろ作ってみているんだが、パンピーの開発者からみてJSFに一言。
JSFはコンポーネントをドラッグアンドドロップでフォームにペタペタと貼付けて作っていく所が特徴。
後はイベントモデルということで、前にSwing等をやったことの有る人の方がわかりやすいだろう。
で、足りないものがあるなーと思っているのは、JSFは基本的に設計時にコンポーネントを固定数だけ貼付けて動く画面のものには非常に有効で作りやすいのだが、例えば、DBから取り出した個数に応じて動的にコンポーネント数がかわるものに関しては、あまり作りやすいように作られていはいないようだ。(間違っていたら識者の方ご教授ください)
基本的にDBの取得数に応じて動的に変化するコンポーネントって、グリッドやドロップダウンリストぐらいしか無い。
けどたとえば、DBの取得数に応じてリンクをリストとしてならべて行くとか、画像を並べていくとかいう時には、それ用のコンポーネントが無いのだ。解決策としは、あらかじめJSPのデザイン時にプレイスホルダーとしてレイアウトパネルかグリッドパネルを設置する。グリッドパネルの方はテーブルとしてレンダリングされるので、単純にDIVとしてレンダリングされるレイアウトパネルの方が好ましいかもしれない。
そして管理Beanの方で、init時にDBからの取得したRowSetをループさせながら動的にHyperLinkクラスのインスタンスを生成して、それをレイアウトパネルの子属性として、ちょうどDOMのように追加していく訳である。具体的にはコンポーネントインスタンスのgetChildren()メソッドして、それに対してadd()メソッドで追加していく訳である。
このように、JSFではこういうコンポーネントが無い為に泥臭くJavaコードを記述しなければならない。
ASP.NETであるような、Repeator(?)のようなものが必要なのではないだろうか。
この他にも単純にJSFの管理ビーンの中からHttpServletRequestなどにアクセスするときも、結構、面倒な手順を2~3行書く必要が合ったりとか、結構、Javaの持っているまどろっこしい所が出てしまっているようだ。
もう少しEoDを極めないと中途半端だと感じた訳である。