2010-02-16 7 views
6

मैं यहां एक परियोजना में आईएसएफसेस 1.8 के साथ जेएसएफ 1.2 का उपयोग कर रहा हूं।जेएसएफ फ्लोट रूपांतरण

मेरे पास एक पृष्ठ है जो मूल रूप से फ़्लोटिंग-पॉइंट नंबर फ़ील्ड के पूरे समूह के लिए एक बड़ा संपादन ग्रिड है। यह आदिम float प्रकार

अब साथ एक मूल्य वस्तु पर पेज की ओर इशारा करते पर inputText क्षेत्रों के साथ लागू किया गया है एक नया आवश्यकता देखता है जैसे क्षेत्रों में से कुछ व्यर्थ हो, मैं मूल्य वस्तु को बदलने के लिए आदिम बजाय Float वस्तुओं का उपयोग करना चाहता प्रकार के। मुझे नहीं लगता था कि इसे पेज पर रखने के लिए मुझे कुछ भी करने की ज़रूरत होगी।

हालांकि, जब मैं परिवर्तन करना मैं निम्नलिखित त्रुटि मिलती है:

/pages/page.xhtml @79,14 value="#{row.targetValue}": java.lang.IllegalArgumentException: argument type mismatch

और

/pages/page.xhtml @79,14 value="#{row.targetValue}": java.lang.IllegalArgumentException: [email protected]

पेज इस तरह दिखता है:

<ice:inputText value="#{row.targetValue}" size="4"> 
    <f:convertNumber pattern="###.#" /> 
</ice:inputText> 

मैं भी कोशिश की है वहां <f:convert convertId="javax.faces.Float" /> में भी जोड़ना है लेकिन यह काम करने के लिए प्रतीत नहीं होता है! न तो मान ऑब्जेक्ट प्रकार को Double में बदलता है।

मुझे यकीन है कि शायद मैं वास्तव में कुछ आसान याद कर रहा हूं लेकिन मैं थोड़ी देर के लिए इस पर घूर रहा हूं और कोई जवाब तुरंत स्पष्ट नहीं है!

+0

यह टॉमकैट 6.0.20 (बर्फ के बिना) के Mojarra 2.0.2 के साथ पुन: पेश नहीं कर सकता है। क्या आप पूर्ण स्टैकट्रैक पोस्ट कर सकते हैं? – BalusC

+0

@ बाल्लूसी दुर्भाग्यवश मेरे पास पूर्ण स्टैक ट्रेस तक पहुंच नहीं है, त्रुटि जेएसएफ के भीतर उत्पन्न होती है और मुझे इसकी पहुंच नहीं है। लेकिन मैं कुछ और जानकारी पर काम कर रहा हूं, मेरे साथ एक मिनट के लिए सहन करें ... –

+0

बस इसे सर्वर लॉग से प्राप्त करें? – BalusC

उत्तर

4

कुछ जांच के बाद (उदाहरण के लिए here, here और here) <f:convertNumber> समस्या है। ऐसा लगता है कि जिस संख्या में यह परिवर्तित होता है वह उस इनपुट पर निर्भर होता है जो आप इसे देते हैं - यह एक पूर्णांक या फ़्लोटिंग पॉइंट नंबर हो सकता है। दूसरे शब्दों में, यह लक्ष्य प्रकार को नहीं देखता है - यह सिर्फ java.lang.Number का उदाहरण उत्पन्न करता है। जो शायद ही आदर्श है, हालांकि मैं यह निर्धारित नहीं कर सकता कि ऐसा इसलिए है क्योंकि कहीं मैं जेएसएफ या ईएल का पुराना संस्करण या ऐसा कुछ उपयोग कर रहा हूं।

वहाँ तीन समाधान होने लगते हैं:

  1. उपयोग java.lang.Number अपने मूल्य ऑब्जेक्ट प्रकार के रूप में;
  2. अपना खुद का कनवर्टर लिखें;
  3. <f:convertNumber> का उपयोग न करें।

दुर्भाग्य से # 1 अन्य कारणों से मेरे लिए कोई विकल्प नहीं है, और मैं इस समय अपना स्वयं का कनवर्टर नहीं लिखना चाहता हूं। हालांकि अगर मैं कन्वर्ट नम्बर को हटाने के लिए कोड बदलता हूं, तो सबकुछ ठीक काम करता प्रतीत होता है। (मैंने वैल्यू ऑब्जेक्ट टाइप को Double पर भी अपडेट किया है जिसे मैंने देखा लिंक में से एक में सुझाव दिया था)।

जो अपवादों को रोकता है, और ऐसा लगता है कि जेएसएफ अभी भी ऐसा कर रहा है जो मैं करना चाहता हूं। बस परेशान है कि ऐसा लगता है कि आप convertNumber और उसी उदाहरण में कन्वर्ट प्रकार निर्दिष्ट नहीं कर सकते हैं।

+0

नंबर कनवर्टर, माईफेस में कम से कम 'दशमलव दशमलव' का उपयोग मूल्य को पार्स करने के लिए करता है, इसलिए यह आदर्श तरीका है। – Bozho