2011年07月18日

WeldからJSFのViewScopedが使えるようになったみたい

Weld(CDI)とMojarra(JSF)の連携がGlassFish v3.1あたりで強化されているみたいなので確認してみたよ。



GlassFish v3のころは、連携が十分じゃなかったんだよね。

具体的には、@ManagedBeanに対して、@Injectが動かなかったの。

でも今は動くようになってる。




比較していくと、普通にWeld(CDI)の場合はこんな感じ。

テキストエディタで書いてるから間違ってたらごめんなさい。



@javax.inject.Named

@javax.enterprise.context.RequestScoped

public class HogeComponent {

  // CDIとしてDIされる。

  @javax.inject.Inject

  PiyoComponent piyo;

}


これでCDI管理の元で、Injectされる。

で、今までMojarra(JSF)で同じことやろうとすると、こんな感じ。


@javax.faces.bean.ManagedBean

@javax.faces.bean.ViewScoped

public class HogeComponent {

  // JSFとしてDIされる。

  @javax.faces.bean.ManagedProperty

  PiyoComponent piyo;

}

@Injectが使えなかったってこと。


ManagedBeanだと、CDI管理下に入らないから、

CDIがInjectするための@Injectが動かなかったんだと思う。


Weldの良いところは、なんでも@Injectで入れちゃうぞ、っていうことだから、

『ManagedBeanの方使わなければいいじゃん。』っていう話でもあったんだけど、

そうすると、ViewScopedが使えなくなるという……。



下のようなのは動かないってこと。



@javax.inject.Named

@javax.faces.bean.ViewScoped

public class HogeComponent {

  // GlassFish v3では動かない。

  @javax.inject.Inject

  PiyoComponent piyo;

}

このために、Weldで動くViewScopedを自作するというのをやってたんだけど、

GlassFish v3.1に載ってるWeldさんならそんな必要もなくなったみたい。

結局、下のでCDI管理下に入るようになったのかな。



@javax.faces.bean.ManagedBean

@javax.faces.bean.ViewScoped

public class HogeComponent {

  // GlassFish v3.1では動く。

  @javax.inject.Inject

  PiyoComponent piyo;

}

これで、Injectがちゃんとされる。JSF全体がCDI管理下に入った感じかな。

もうオリジナルなViewScopedはいらないね('-^*/


タグ:Weld CDI ViewScoped
posted by すふぃあ at 10:36| Comment(2) | TrackBack(0) | 雁字
この記事へのコメント
WeldからJSFのViewScopedが使えるようになったみたい: すふぃあの記憶
<a href="http://www.g6b26c6g296bf44bgrh70d0iiiw8c238s.org/">ahthrrqtdq</a>
[url=http://www.g6b26c6g296bf44bgrh70d0iiiw8c238s.org/]uhthrrqtdq[/url]
hthrrqtdq http://www.g6b26c6g296bf44bgrh70d0iiiw8c238s.org/
Posted by hthrrqtdq at 2014年12月23日 05:26
Posted by ジバンシー ウェア ブランド at 2015年01月19日 22:21
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/46818385

この記事へのトラックバック