2011-07-12 20 views
5

मेरे पास ParentBean कक्षा है जिसमें @ManagedBean एनोटेशन है। यदि मैं इस वर्ग को उप-वर्गीकृत करता हूं, तो ChildBean @ManagedBean एनोटेशन का उत्तराधिकारी नहीं है हालांकि @ManagedBean एनोटेशन में मेटा-एनोटेशन Inherited है।जेएसएफ 2 - @ManagedBean नहीं मिला

मुझे क्या याद आ रही है?

 
JSF 2.0 
Mojarra 2.0.6 | JBoss 5.1.0.GA 
Eclipse Indigo - Build id: 20110615-0604 

संपादित करें: फिर भी एक समाधान की तलाश में ...

उत्तर

4

इस question पढ़ रहे हैं और एक छोटा सा Mojarra से स्रोत कोड (question देखें) पढ़ने के बाद, मुझे लगता है कि वास्तव में अच्छी तरह से Mojarra (लोड हो रहा है प्रदर्शन के लिए) वर्ग को स्कैन नहीं कर सकते हैं।

तो मेरा अनुमान है कि एक दिए गए वर्ग के लिए, Mojarra AnnotationScanner इस कक्षा में रहता है और यह इस कक्षा के पदानुक्रम को स्कैन नहीं करता है।

यही कारण है कि मेरा ChildBeanManagedBean के रूप में पहचाना नहीं गया है।

6

javax.annotation.ManagedBean@Inherited जरूरत नहीं है। javax.faces.ManagedBean है। अपने आयात की जांच करें।

इसके अलावा, मैं उस पर भरोसा नहीं करता। मैं इसे spec में परिभाषित नहीं देखता, लेकिन आमतौर पर जेएसएफ प्रबंधित बीन के साथ विरासत एक बुरा विचार है। यहां तक ​​कि यदि आपके पास है, तो आपके पास एक अमूर्त बेस क्लास होनी चाहिए जिसमें सामान्य कार्यक्षमता हो लेकिन वह स्वयं एक प्रबंधित बीन नहीं है।

एक और बात - कोड को बाद में पढ़ना कठिन होगा यदि आपके पास बीन पर एनोटेशन नहीं है। इसमें कुछ समय लग सकता है जब तक पाठक को यह महसूस न हो कि यह विरासत में है।

तो प्रत्येक बीन पर @ManagedBean डालें, और विरासत को अधिक न करें।

+0

क्षमा करें, मैंने गलती की है। मैं 'javax.faces.bean.ManagedBean 'का उपयोग करता हूं। यह विरासत में नहीं है। – Stephan

+0

मुझे टिप्पणी नहीं मिली। – Bozho

+1

मैं 'javax.faces.bean.ManagedBean' का उपयोग कर रहा हूं 'पेरेंटबीन' एनोटेट करने के लिए। 'चाइल्डबीन' इस एनोटेशन का वारिस नहीं करता है। – Stephan

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