اگر میخواهید از یک Managed Bean در یک کلاس Bean دیگر(از نوع Managed Bean )استفاده نمایید باید از ManagedProperty@ استفاده نمایید. بهتر است نحوه استفاده از این Annotation را با یک مثال بیان کنیم.

فرض کنید میخواهید مشخصات کاربران خود را که یک کلاس Session Bean ذخیره شده است در یک کلاس از نوع ManagedBean استفاده نمایید. این کار را میتوانید همانند دستورات زیر انجام دهید:

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

 

@ManagedBean

@SessionScoped

public class LoginUser implements Serializable{

         // ...

}

 

حال برای اینکه آبجکت ایجاد شده از کلاس فوق را به همراه اطلاعات و مقادیر ذخیره شده در آن در یک ManagedBean فراخوانی کرده و مورد استفاده قرار دهید, باید کلاس ManagedBean خود را بصورت زیر تعریف نمایید :

import javax.faces.bean.ManagedBean;

import javax.faces.bean.ManagedProperty

import javax.faces.bean.ViewScoped;

 

@ManagedBean

@ViewScoped

public class Products implements Serializable{

        @ManagedProperty(“#{loginUser}”)

         private LoginUser loginUser;

 

         public void setLoginUser(LoginUser loginUser){

                    this.loginUser = loginUser;

         }

}

توجه داشته باشید که متد setter حتماْ برای خاصیت ManagedProperty@ تعریف گردد. در غیر اینصورت برنامه پیغام NullException را به خروجی ارسال خواهد کرد.

 

نکته آخر اینکه نام متغیر ManagedProperty@ در کلاس ViewScoped باید حتماْ برابر با نام کلاس SessionScoped باشد(به مقدار Experssion ارسال شده به ManagedProperty@ توجه نمایید).

 

نکته: در کلاسهای CDI Bean اینکار با استفاده از علامت Inject@ صورت می پذیرد.