मैंने कोड लिखा है जो आरईएसटी जेएक्स-आरएस का उपयोग कर एक्सेल फ़ाइल उत्पन्न करता है और मैंने पुष्टि की है कि उत्पन्न एक्सेल फ़ाइल ग्लासफ़िश सर्वर निर्देशिका में है।जेएक्स-आरएस में प्रतिक्रिया शीर्षलेख कैसे सेट करें ताकि उपयोगकर्ता एक्सेल के लिए पॉपअप डाउनलोड देख सके?
लेकिन मेरा लक्ष्य है जब बटन पर उपयोगकर्ता क्लिक (जो एक्सेल .xls उत्पन्न), मैं डाउनलोड पॉपअप उपयोगकर्ता पूछ बचाने या बस किसी भी अन्य वेब सेवाओं को किसी भी डाउनलोड करने के लिए कर रही है की तरह .xls फ़ाइल को खोलने के लिए है कि क्या दिखाना चाहते हैं फाइलों का प्रकार
मेरे खोज के अनुसार, कदम है:
एक्सेल .xls (किया)
एक्सेल लिखने
- JAX-आरएस फ़ाइल में
, सेट प्रतिक्रिया स्ट्रीम करने के लिए उत्पन्न कुछ हद तक हेडर,
स्ट्रिंग फ़ाइल नाम = "Blah_Report.xls"; response.setHeader ("सामग्री-विस्थापन", "अनुलग्नक; फ़ाइल नाम =" + फ़ाइल नाम);
मेरा प्रश्न मैं JAX-RS फाइल में यह सब कर रहा हूँ और मैं HttpServletResponse नहीं है वस्तु उपलब्ध।
से Add Response Header to JAX-RS Webservice
जवाब के अनुसार वह कहता है:
आप अपने वेब सेवा में @Context टिप्पणी द्वारा वास्तविक HttpServletResponse के लिए एक संदर्भ इंजेक्षन और addHeader उपयोग कर सकते हैं() आदि अपने शीर्षलेख जोड़ने के लिए।
मैं सच में समझ नहीं सकता कि वास्तव में क्या है कि नमूना कोड के बिना मतलब है ..
@GarretWilson क्यों नहीं? आपको क्या भ्रमित करता है? यह एक साधारण हेडर है। – Tarlog
क्योंकि सिंगलटन 'माइक्रोसॉर्स' में 'myMethod()' एक साथ कई धागे द्वारा बुलाया जाएगा। प्रत्येक थ्रेड में 'HttpServletResponse' का एक अलग उदाहरण होगा, फिर भी सिंगलटन' elseServletResponse' सदस्य चर केवल एक ही मूल्य को एक ही समय में रख सकता है। यह काम करने का एकमात्र तरीका यह है कि अगर किसी अन्य थ्रेड-सुरक्षित प्रॉक्सी के साथ 'elseServletResponse' इंजेक्शन दिया गया था जो वर्तमान थ्रेड के वास्तविक 'HttpServletResponse' उदाहरण को निर्धारित करने के लिए थ्रेड स्थानीय या कुछ ऐसे का उपयोग करता है। –
जहां तक मुझे याद है HttpServletRequestWrapper इंजेक्शन दिया गया है; इसका कार्यान्वयन टीएलएस से वास्तविक HttpServletRequest लेता है। तो आपका अनुमान कम या ज्यादा सही है। – Tarlog