2013-09-24 7 views
6

मैं जावा ईई 6 का उपयोग कर रहा jboss ईएपी 6 पर, और मेरे JSF सेम इस तरह एनोटेट: @ManagedBean @ViewScoped (दोनों javax.faces.bean पैकेज से)Viewscoped JSF और CDI सेम

हालांकि, वे सीडीआई बीन्स भी हैं (डिफॉल्ट कन्स्ट्रक्टर, @ इंजेक्ट @ प्रिडस्ट्राय आदि का उपयोग)। मैं हर समय पढ़ रहा हूं कि आप इन एनोटेशन (जेएसएफ और सीडीआई) को मिश्रण नहीं कर सकते हैं, लेकिन यह स्पष्ट रूप से ठीक काम कर रहा है: इंजेक्शन काम कर रहे हैं, प्रीडेस्ट्राय को व्यू चेंज इत्यादि पर बुलाया जाता है)। क्या मैं कुछ भूल रहा हूँ? समस्या क्या है? क्यों उपयोग नहीं करते?

उत्तर

9

सीडीआई @Inject "हर जगह" और इस प्रकार जेएसएफ @ManagedBean के अंदर भी काम करता है। जेएसएफ समकक्ष @ManagedProperty केवल @ManagedBean के अंदर काम करता है। आप @Inject किसी भी सीडीआई प्रबंधित बीन में एक वास्तविक जेएसएफ प्रबंधित बीन भी नहीं कर सकते (इसके बजाय, यह एक सीडीआई प्रबंधित उदाहरण होगा)। शायद यही वह है जिसे आप पढ़ रहे थे। आम सहमति, हालांकि, वास्तव में शुरुआत करने वालों के बीच भ्रम से बचने के लिए उन्हें मिश्रण नहीं करना है। JSF utility library OmniFaces में जेएसएफ 2.0/2.1 के लिए एक सीडीआई संगत @ViewScoped है।

@PreDestroy रास्ता नहीं CDI के लिए विशिष्ट के द्वारा होता है, न तो अपने समकक्ष @PostConstruct है। उन्हें सीडीआई प्रबंधित बीन्स और जेएसएफ प्रबंधित बीन्स दोनों में ठीक काम करना चाहिए।

+0

उत्तर के लिए धन्यवाद। लगता है कि मैं इन सभी चीजों के बारे में वास्तव में उलझन में हूं ... तो मेरे पास सीडीआई बीन की बजाय जेएसएफ प्रबंधित बीन है? यहां तक ​​कि यदि यह बीन सभी आवश्यकताओं को पूरा करता है तो भी एक सीडीआई बीन दस्तावेज वार्ता (डिफ़ॉल्ट कन्स्ट्रक्टर, आंतरिक कक्षा आदि) के बारे में नहीं है? यदि हां, तो सीडीआई बीन में क्या अंतर है? क्या बीमारियां हैं या मैं इस बीन के साथ क्या नहीं कर सकता कि मैं एक सीडीआई बीन के साथ कर सकता हूं? – htft

+0

आप जेएसएफ प्रबंधित बीन उदाहरण कहीं और 'इंजेक्ट' नहीं कर सकते हैं। यदि आपको वास्तव में इसकी आवश्यकता नहीं है, तो वास्तव में कोई कमी नहीं है। लेकिन ध्यान दिया जाना चाहिए कि जेएसएफ धीरे-धीरे सीडीआई में जा रहा है। आने वाले नए जेएसएफ विशिष्ट एनोटेशन जैसे '@ फ्लोस्कोप्ड' सीडीआई-केवल हैं। जेएसएफ '@ प्रबंधित बीन सुविधा को निकट भविष्य में बहिष्कृत कर दिया जाएगा। उपयोगकर्ताओं को ऐसा होने से पहले सीडीआई में जाने के लिए प्रोत्साहित किया जाता है। – BalusC

संबंधित मुद्दे