2011-06-10 6 views
25

में सर्वलेट अनुरोध ऑब्जेक्ट प्राप्त करें मुझे एक पीओजेओ में वर्तमान पृष्ठ यूआरएल प्राप्त करने की आवश्यकता है जिसे एसीजी क्लास से बुलाया जा रहा है (जिस ऐप पर मैं काम कर रहा हूं उसके लिए कुछ कस्टम तर्क जोड़ने की आवश्यकता है) और इसकी आवश्यकता है HttpServletRequest को पुनर्प्राप्त करें ताकि मैं यूआरएल का सबडोमेन प्राप्त कर सकूं (जिस पर तर्क आधारित है)।पीओजेओ कक्षा

मैं जोड़ने की कोशिश की है:

@Autowired 
private HttpServletRequest request; 

... 

public void setRequest(HttpServletRequest request) { 
    this.request = request; 
} 

public HttpServletRequest getRequest() { 
    return request; 
} 

हालांकि जब मैं अपने कोड में अनुरोध वस्तु उपयोग करने का प्रयास है, यह रिक्त है।

कोई विचार क्या मैं गलत कर रहा हूं या मैं इसे बेहतर तरीके से कैसे कर सकता हूं?

उत्तर

43

यदि बीन अनुरोध किया गया है तो आप HttpServletRequest को स्वचालित रूप से कर सकते हैं जैसे आप कर रहे हैं।

@Component 
@Scope("request") 
public class Foo { 
    @Autowired private HttpServletRequest request; 

    // 
} 

नहीं तो आप वर्तमान अनुरोध के रूप में निम्नानुसार प्राप्त कर सकते हैं:

ServletRequestAttributes sra = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); 
    HttpServletRequest req = sra.getRequest();  

इस कवर के तहत धागे की स्थानीय उपयोग करता है।

यदि आप स्प्रिंग एमवीसी का उपयोग कर रहे हैं तो आपको बस इतना ही चाहिए। यदि आप स्प्रिंग एमवीसी का उपयोग नहीं कर रहे हैं तो आपको अपने web.xml में RequestContextListener या RequestContextFilter पंजीकृत करना होगा।

+0

अच्छा काम करता है। धन्यवाद। – NRaf

+0

इसके लिए वसंत 1.2.5 काउंटर हिस्सा क्या है, क्योंकि ये कक्षाएं वसंत 1.2.5 में उपलब्ध नहीं हैं –

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