2010-04-05 13 views
7

के साथ रूट रूट में घटक नहीं मिला है: मेरे पास है: इनपुटफाइल अपलोड फॉर्म के एचटीएमएल में, इस पृष्ठ की आईडी फॉर्म है: inputFile लेकिन जब मैंने घटक प्राप्त करने का प्रयास किया "फॉर्म: इनपुटफाइल" का उपयोग करके दृश्य रूट शून्य है, लेकिन जब "फॉर्म:" हटा दिया जाता है तो रिटर्न घटक होता है। घटक मेरे प्रबंधित बीन में मान निर्धारित नहीं करता है, किसी को यह समस्या है?जेएसएफ को फॉर्म आईडी

संपादित करें:

<h:form id="form" enctype="multipart/form-data"> 
<t:inputFileUpload id="inputFile" size="40" value="#{managedBean.inputFile}"/> 
</h:form> 

कामयाब सेम में:

private UploadedFile inputFile; 
हो जाता है और ग्रहण द्वारा प्रदान सेट के साथ

//This method scans the view root and returns the component with the id passed as parameter 
findComponentInRoot("form:inputFile"); 

इस अशक्त देता है, लेकिन जब मैं का उपयोग करें:

//This method scans the view root and returns the component with the id passed as parameter 
    findComponentInRoot("inputFile"); 

वापसी घटक मैं तलाश कर रहा हूँ है, लेकिन जब मैं इंटरनेट एक्सप्लोरर में स्रोत देखें का उपयोग इस घटक की आईडी है "फ़ॉर्म: inputfile"।

मुझे नहीं पता कि यह संबंधित है या नहीं, लेकिन घटक मेरे प्रबंधित बीन में मान निर्धारित नहीं करता है और यह तथ्य अजीब है कि घटक की आईडी HTML स्रोत से अलग है। मैं जेएसएफ 1.2 मोजाररा का उपयोग कर रहा हूं। किसी और को यह समस्या है? या पता है क्यों ऐसा होता है?

EDIT2: ठीक है, मैं बहुत बेवकूफ हूं, स्पष्ट रूप से निर्माण सही ढंग से काम नहीं कर रहा था और जब निर्माण को चींटी से दूसरे कार्य में बदल दिया गया था (अभी भी नहीं पता कि क्यों, लेकिन बस काम किया)। परेशानी के लिए खेद हैं।

+0

मैं आपके प्रश्न को समझ नहीं सकता। अधिक जानकारी दें, अधिमानतः कोड और इसे फिर से लिखें। – Bozho

+0

मेरे पास है: inputFileUpload एक फॉर्म के अंदर, घटक का मान मेरे प्रबंधित बीन पर नहीं जा रहा है और जब मैंने दृश्य रूट से घटक प्राप्त करने का प्रयास किया है तो घटक की आईडी HTML स्रोत में दिखाई देने से अलग है पन्ना। – kenzokujpn

+0

_how_ क्या आपने इसे प्राप्त करने का प्रयास किया था। जैसा कि मैंने कहा - कोड प्रदान करें! – Bozho

उत्तर

0

मुझे लगता है कि findComponentInRootthis (एक मामूली जानकारी जो आपको साझा करनी चाहिए)।

वैसे भी, findComponent(..) या getChildren(..) का उपयोग करके पृष्ठ में परिभाषित घटकों के id को हमेशा वापस कर दें। एचटीएमएल आईडी कुछ अलग है जिसमें naming container:id शामिल हैं।

+0

मुझे लगता है कि वह वास्तव में क्या जानना चाहता है: जेएसएफ बैकिंग बीन में अपलोडफाइल संपत्ति को सही तरीके से सेट क्यों नहीं कर रहा है? – marcosbeirigo

+0

findComponentInRoot लिंक में बिल्कुल कोड है। इस मामले में मेरी समस्या यह है कि कुछ पृष्ठों में यह "formId: idComponent" के साथ आता है, और अन्य में यह "idComponent" के साथ आता है, मुझे यकीन नहीं है कि आईडी में "फ़ॉर्म" की अनुपस्थिति संबंधित है, लेकिन यह घटक प्रबंधित बीन में मान सेट नहीं कर रहा है। – kenzokujpn

2

आपको घटक binding या UIViewRoot#findComponent() का उपयोग करना चाहिए। लेकिन वह अपलोड की गई फ़ाइल की समस्या को हल नहीं करेगा। इसे ठीक करने के लिए, पहला चरण यह सुनिश्चित करना है कि आपने ExtensionsFilter को Tomahawk documentation के अनुसार ठीक से कॉन्फ़िगर किया है और कॉन्फ़िगर किया है, क्योंकि यह multipart/form-data अनुरोध को पार्स करने के लिए जिम्मेदार है और अनुरोध पैरामीटर मानचित्र में अपलोड किए गए फ़ाइल के साथ सभी पैरामीटर डालने के लिए जिम्मेदार है, ताकि FacesServlet उन्हें लागू कर सकें और मॉडल मान अपडेट कर सकें।

+0

मेरे सहकर्मी ने पहले ही यह किया है, और जिन पृष्ठों में उन्होंने काम किया है, वे ठीक काम कर रहे हैं, मुझे पहले ही कॉन्फ़िगरेशन मिलते हैं लेकिन मेरे पृष्ठ में काम नहीं कर रहा है। – kenzokujpn

+0

डीबग कौन से चरणों को निष्पादित किया गया है और यदि कोई सत्यापन या रूपांतरण त्रुटियां फेंक दी गई हैं (पृष्ठ को सभी को सूचित करने के लिए '' जोड़ें)। – BalusC