مطابق با تعاریف JavaBean که در وب سایت (http://java.sun.com/products/javabeans) بیان شده است، یه کلاس Bean یا JavaBean یک کامپیوننت جاوا با قابلیت استفاده مجدد (Reuseable) بوده که میتوان آنها را در ابزارهای متعدد مورد استفاده قرارداد یا آنها را ویرایش نمود. این تعریف یک بیان زیبا از JavaBean میباشد.

با توجه به تعریف فوق، یک کلاس Bean یک کلاس معمولی جاوا میباشد. در JSF، کلاس های Bean وظیفه نگهداری داده های یک صفحه JSF را بر عهده دارند. در JSF به دو طریق می توان یک کلاس ساده جاوا را به یک کلاس Bean مرتبط با یک صفحه JSF تبدیل نمود.

  • اگر در پروژه خود از CDI استفاده میکنید، کلاس Bean شما باید بصورت زیر تعریف گردد :
  1. @Named
  2. @RequestScoped
  3. public TestBean implements Serializable{
  4.        ............// do any things........//
  5. }
توجه داشته باشید که در حالت CDI، جهت استفاده از علامت @RequestScope باید پکیج javax.enterprise.context را به پروژه خود اضافه کنید.
  • اگر از CDI استفاده نمیکنید و تمامی کنترل برنامه در اختیار JSF Implementation میباشد، کلاس Bean باید بصورت زیر تعریف گردد:

@ManagedBean

@RequestScoped

public TestBean implements Serializable{

       ............// do any things........//

}

در حالت علامت RequestScoped@ از پکیج javax.faces.Bean فراخوانی میگردد.

 

 

بعد از تعریف یک کلاس با استفاده از Annotation های می توان به راحتی از آنها در صفحه JSF استفاده نمود. به عنوان مثال کلاس زیر را در نظر بگیرید :
@ManagedBean
@RequestScope
public TestBean implements Serializable{
public void helloWord(){
System.out.println('"hello World !");
}
}
 
کلاس فوق یک کلاس Bean ساده با نام TestBean بود که دارای یک متد به نام ()helloWorld میباشد. جهت استفاده از این کلاس میتوان یک صفحه JSF بصورت زیر ایجاد و متد مربوطه را اجرا نمود :


<?xmlversion="1.0"encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core">
  <h:head>
       <title>Welcome</title>       
  </h:head>       
  <h:body>       
  <h:form prependId="false">             
     <h:commandButton value="Call Hello World Methos"
               actionListener ="#{testBean.helloWorld}">                 
   </h:form>            
  </h:body>       
</html>
 

در رابطه با کلاسهای Bean، ایجاد و نحوه استفاده از آنها میتوان به نکات زیر اشاره نمود :
  1. فراخوانی کلاسهای Bean در صفحات JSF با استفاده از علامت {}# صورت میپذیرد.
  2. در صورتی که از خاصیت name در علامتهای ManagedBean@ یا Named@ استفاده نکرده باشید، حرف اول کلاس Bean در صفحه JSF در هنگام فراخوانی باید با حروف کوچک شروع گردد. به عنوان مثال کلاس TestBean بصورت {...testBean}# فراخوانی می گردد.
  3. در صورت نیاز می توانید خاصیت name برای annotation های تعریف کرده و نام کلاس Bean را در هنگام فراخوانی مطابق با نیاز خود تغییر دهید.
  4. در صورت استفاده از فیلد در کلاس Bean میبایست متدهای get/set مربوط به فیلد را در کلاس Bean فراخوانی نمائید.
  5. کامپوننت h:commandButton یکی از کامپوننتهای پیش فرض JSF بوده که از آن برای اجرای فرامین استفاده می گردد.
  6. جهت فراخوانی متدهای کلاس Bean با از خواص action و actionListener کامپوننت h:commandButton و یا سایر کامپوننتهای همنوع استفاده نمود.