2011-11-04 20 views
5

<a4j:support> का उपयोग करते समय RichFaces example में वर्णित जैसा कि ड्रॉप-डाउन-बॉक्स के मान को बदलते समय मुझे हमेशा निम्न त्रुटि मिल रही है।जेएसएफ त्रुटि "एक बच्चे घटक प्रकार की उम्मीद है ... पाया शून्य।"

उम्मीद घटक प्रकार javax.faces.SelectOne (MyID) के लिए UISelectItem/UISelectItems का एक बच्चा घटक प्रकार। शून्य मिला मुझे विश्वास है कि otherFieldIdnull नहीं किया जा सकता हूँ

<h:selectOneMenu id="selectId" valueChangeListener="#{cs.myListener}" value="#{cs.selectList.selectedItem}"> 
<f:selectItems value="#{cs.bundeslandList.selectItems}" /> 
<a4j:support event="onchange" reRender="otherFieldId" /> 
</h:selectOneMenu> 

<h:selectOneMenu id="otherFieldId"> 
<f:selectItems value="#{cs.bundeslandList.selectOtherField.selectItems}" /> 
</h:selectOneMenu> 

cs.bundeslandList.selectOtherField.selectItems के बाद से कम से कम एक खाली ArrayList है,:

यहाँ JSF कोड है।


मैंने अब पूरे पृष्ठ को तोड़ दिया है और मुझे अब त्रुटि नहीं मिल रही है। valueChangeListener को सही ढंग से कहा जाता है लेकिन दुर्भाग्यवश, otherFieldId कॉल के बाद रीफ्रेश नहीं किया जाएगा। यह खाली है। लेकिन जब डीबगिंग मैं देख सकता हूं कि संबंधित संपत्ति प्रविष्टियों से भरा है।

+0

अभी भी उस पर काम कर रहा है ... –

उत्तर

5

<f:selectItems value> का गेटर कुछ बिंदु पर निश्चित रूप से null लौटा दिया है। इस अपवाद के लिए कोई अन्य कारण नहीं है। संभावना है कि आपकी बैकिंग बीन कोड तर्क प्रवाह सादा गलत है।

ध्यान दें कि इस संपत्ति को बनाने static एक बहुत बुरा विचार है। इसे पूरे वेब एप्लिकेशन पर अन्य सभी अनुरोधों के बीच साझा किया जा रहा है। आप इसे अनुरोध के आधार पर या उच्चतम सत्र के आधार पर बनाना चाहते हैं।

+0

क्षमा करें, मैं 'स्थिर 'के बारे में गलत था। –

+0

कृपया मेरी संपादित पोस्ट देखें। –

+0

यह एक अलग समस्या है और तकनीकी रूप से एक नए प्रश्न में जाना चाहिए। पहला कदम यह विस्तारित करना होगा कि "रीफ्रेश नहीं किया जाएगा" के साथ आपका क्या मतलब है। क्या यह अजाक्स फिर से प्रस्तुत नहीं किया गया था? या ' 'getter बस एक खाली सूची वापस कर दिया? – BalusC