जेएसएफ - प्रबंधित बीन्स

प्रबंधित बीन JSF के साथ पंजीकृत एक नियमित जावा बीन वर्ग है। दूसरे शब्दों में, प्रबंधित बीन्स एक जावा बीन है जिसे जेएसएफ ढांचे द्वारा प्रबंधित किया गया है। प्रबंधित बीन में गेट्टर और सेटर विधियां, व्यावसायिक तर्क या यहां तक ​​कि एक बैकिंग बीन (एक बीन में सभी HTML फॉर्म मूल्य शामिल हैं) शामिल हैं।

प्रबंधित बीन्स UI घटक के लिए मॉडल के रूप में काम करता है। प्रबंधित बीन को JSF पेज से एक्सेस किया जा सकता है।

में JSF 1.2, एक प्रबंधित बीन को इसे JSF कॉन्फ़िगरेशन फ़ाइल जैसे कि faceconfig.xml में पंजीकृत करना था। सेJSF 2.0बाद में, प्रबंधित बीन्स को एनोटेशन का उपयोग करके आसानी से पंजीकृत किया जा सकता है। यह दृष्टिकोण सेम और उसके पंजीकरण को एक स्थान पर रखता है इसलिए इसे प्रबंधित करना आसान हो जाता है।

XML कॉन्फ़िगरेशन का उपयोग करना

<managed-bean>
   <managed-bean-name>helloWorld</managed-bean-name>
   <managed-bean-class>com.tutorialspoint.test.HelloWorld</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
</managed-bean> 

<managed-bean>
   <managed-bean-name>message</managed-bean-name>
   <managed-bean-class>com.tutorialspoint.test.Message</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

एनोटेशन का उपयोग करना

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
   @ManagedProperty(value = "#{message}")
   private Message message;
   ...
}

@ प्रबंध किया गया ब्योरा

@ManagedBeanनाम विशेषता में निर्दिष्ट नाम के साथ एक सेम होने के लिए बीन को चिह्नित करता है। यदि नाम विशेषता निर्दिष्ट नहीं है, तो प्रबंधित बीन नाम पूरी तरह से योग्य वर्ग नाम के वर्ग नाम भाग के लिए डिफ़ॉल्ट होगा। हमारे मामले में, यह नमस्ते होगा।

एक और महत्वपूर्ण विशेषता है eager। यदि उत्सुक = "सच" है तो प्रबंधित बीन को पहली बार अनुरोध करने से पहले बनाया जाता है अन्यथा "आलसी" इनिशियलाइज़ेशन का उपयोग किया जाता है जिसमें बीन केवल तभी बनाया जाएगा जब यह अनुरोध किया जाता है।

स्कोप एनोटेशन

स्कोप एनोटेशन में वह स्कोप निर्धारित होता है जिसमें प्रबंधित बीन रखा जाएगा। यदि गुंजाइश निर्दिष्ट नहीं है, तो बीन डिफ़ॉल्ट रूप से अनुरोध करने की गुंजाइश होगी। निम्नलिखित तालिका में प्रत्येक दायरे की संक्षिप्त चर्चा की गई है।

S.No स्कोप और विवरण
1

@RequestScoped

बीन तब तक रहता है जब तक HTTP अनुरोध-प्रतिक्रिया रहती है। यह HTTP रिक्वेस्ट पर निर्मित होता है और HTTP रिक्वेस्ट समाप्त होने पर HTTP रिस्पांस से जुड़ा हुआ हो जाता है।

2

@NoneScoped

बीन एक एकल ईएल मूल्यांकन के रूप में लंबे समय तक रहता है। यह ईएल मूल्यांकन पर निर्मित होता है और ईएल मूल्यांकन के तुरंत बाद नष्ट हो जाता है।

3

@ViewScoped

बीन तब तक रहता है जब तक उपयोगकर्ता ब्राउज़र विंडो / टैब में उसी जेएसएफ दृश्य के साथ बातचीत कर रहा है। यह एक HTTP अनुरोध पर बनाया जाता है और उपयोगकर्ता द्वारा किसी भिन्न दृश्य पर पोस्टबैक करने के बाद नष्ट हो जाता है।

4

@SessionScoped

बीन तब तक रहता है जब तक HTTP सत्र रहता है। यह सत्र में इस बीन को शामिल करने वाले पहले HTTP अनुरोध पर निर्मित होता है और HTTP सत्र के अमान्य होने पर नष्ट हो जाता है।

5

@ApplicationScoped

बीन तब तक रहता है जब तक वेब एप्लिकेशन रहता है। यह एप्लिकेशन में इस बीन को शामिल करने वाले पहले HTTP अनुरोध पर बन जाता है (या जब वेब एप्लिकेशन शुरू होता है और उत्सुक = सही विशेषता @ManagedBean में सेट की जाती है) और वेब एप्लिकेशन के शट डाउन होने पर नष्ट हो जाता है।

6

@CustomScoped

बीन कस्टम मैप में बीन के प्रवेश के रूप में लंबे समय तक रहता है, जो इस दायरे के लिए बनाया गया है।

@ प्रबंधक प्रबंधित सूचना

JSF एक साधारण स्थैतिक निर्भरता इंजेक्शन (DI) ढांचा है। का उपयोग करते हुए@ManagedProperty एनोटेशन, एक प्रबंधित बीन की संपत्ति को दूसरे प्रबंधित बीन में इंजेक्ट किया जा सकता है।

उदाहरण अनुप्रयोग

आइए हम प्रबंधित बीन्स के लिए उपरोक्त एनोटेशन का परीक्षण करने के लिए एक परीक्षण जेएसएफ एप्लिकेशन बनाएं।

कदम विवरण
1 एक नाम के साथ एक प्रोजेक्ट बना HelloWorld एक पैकेज के तहत com.tutorialspoint.test के रूप में विस्तार से बताया JSF - आवेदन बनाएं अध्याय।
2 नीचे बताए अनुसार HelloWorld.java को संशोधित करें। शेष फाइलों को अपरिवर्तित रखें।
3 नीचे दिए गए तरीके से एक पैकेज com.tutorialspoint.test के तहत Message.java बनाएं ।
4 यह सुनिश्चित करने के लिए एप्लिकेशन को संकलित करें और चलाएं कि व्यावसायिक तर्क आवश्यकताओं के अनुसार काम कर रहा है।
5 अंत में, एप्लिकेशन को युद्ध फ़ाइल के रूप में बनाएं और इसे Apache Tomcat Webserver में तैनात करें।
6 अंतिम चरण में नीचे बताए अनुसार उपयुक्त URL का उपयोग करके अपना वेब एप्लिकेशन लॉन्च करें।

HelloWorld.java

package com.tutorialspoint.test;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
   @ManagedProperty(value = "#{message}")
   private Message messageBean;
   private String message;
   
   public HelloWorld() {
      System.out.println("HelloWorld started!");   
   }
   
   public String getMessage() {
      
      if(messageBean != null) {
         message = messageBean.getMessage();
      }       
      return message;
   }
   
   public void setMessageBean(Message message) {
      this.messageBean = message;
   }
}

Message.java

package com.tutorialspoint.test;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "message", eager = true)
@RequestScoped
public class Message {
   private String message = "Hello World!";
	
   public String getMessage() {
      return message;
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

home.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">
   <head>
      <title>JSF Tutorial!</title>
   </head>
   
   <body>
      #{helloWorld.message}
   </body>
</html>

एक बार जब आप सभी परिवर्तनों के साथ तैयार हो जाते हैं, तो हमें एप्लिकेशन को संकलित करने और चलाने के लिए जैसा कि हमने JSF में किया था - एप्लिकेशन अध्याय बनाएं। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित परिणाम देगा।