SyntaxHighlighter

2011年1月20日木曜日

JSFのManagedBeanをFacesContextから取得する

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

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

  1. package sample;  
  2. import java.util.Date;  
  3. import javax.enterprise.context.RequestScoped;  
  4. import javax.inject.Named;  
  5.   
  6. @RequestScoped  
  7. @Named("test1")  
  8. public class TestBean1 {  
  9.  public Date getDate() {  
  10.   return new Date();  
  11.  }  
  12. }  

こんな感じ

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

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

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

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

1 件のコメント:

  1. こんばんは。

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

    返信削除