名前って大事
強く思うことがある。
普通にプロジェクトを作ってできる雛形にある、ApplicationBean1やSessionBean1やRequestBean1の1っていらないよね?
個人的に使うときには、これらを全部消してから使ってる。
まだ、1がついてなければ、そのまま使ったかもしれないけど…。
POJO・・・?
Web画面に対応するJavaのクラスだから、ある程度Webに依存するのがあるのは仕方ないかな~…って思うけど、extends AbstractPageBeanとしてるのはいただけない。
initとかdestroyとかprerenderとかpreprocessとかが定義されてるのとかは別にいいけど、getFacesContext()とかで、思いっきりJSF無しに私生きていけないわっていうくらい依存してるのは好きじゃない。
faces-config.xmlでDIできるよね?
faces-config.xmlでmanaged-beanタグを使ってクラスをリクエストスコープやセッションスコープで登録できる。
AOPなどの、高性能DIコンテナみたいな機能はないけど、プロパティインジェクションができる。
なのに、何故か新規作成したページには、下のようなコードが組み込まれる。
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1) getBean("RequestBean1");
}
個人的には
private SessionBean1 sessionBean1;
public SessionBean1 getSessionBean1() {
return sessionBean1;
}
public void setSessionBean1(SessionBean1 sessionBean1) {
this.sessionBean1 = sessionBean1;
}
みたいなプロパティだけ定義して、faces-config.xmlのほうでSessionBean1のインスタンスを設定するようにして欲しかった。
というか簡単に、このManagedBeanのこのプロパティには、このManagedBeanのインスタンスを入れるよってGUIの上から定義できるようにしてくれたらハッピーだったのになぁ。
なんだかんだ言って
Visual Studioライクに開発できるので素敵だと思ってたりする今日この頃でした。