SyntaxHighlighter

2011年1月20日木曜日

JSFのManagedBeanをFacesContextから取得する

前回は、「いにゃの場合: BeanManagerからManagedBeanを取得する」でCDIのManagedBean取得を説明したが、今回はFacesContextからJSFのManagedBeanを取得する方法をメモしておきます。

前回と同じManagedBeanを例として考えると、

package sample;
import java.util.Date;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

@RequestScoped
@Named("test1")
public class TestBean1 {
 public Date getDate() {
  return new Date();
 }
}

こんな感じ

FacesContext ctx = FacesContext.getCurrentInstance();
ELContext context = ctx.getELContext();
ELResolver resolver = context.getELResolver();
TestBean1 bean = (TestBean1)resolver.getValue(
  context, null, "test1");

JSFではなくJSPのpageContextを利用する場合、以下のようにELContextを取得すればOKです。
ELContext context = pageContext.getELContext();

resolver#getValueの第2引数は、ベースのオブジェクトを指定します。
beanのプロパティ"date"を取得するのであれば、以下のようにします。

Date date = (Date)resolver.getValue(context, bean, "date");

1 件のコメント:

  1. こんばんは。

    ビーンを取得する事、 かなりありそうですね。

    返信削除