2013-10-08 11 views
5

एक इंटरसेप्टर मैं नीचे दिए गए कोड का इस्तेमाल किया में HttpServletRequest पाने के लिए:प्राप्त HttpServletRequest Struts 2 इंटरसेप्टर में

HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST); 

मैं इंटरसेप्टर में ServletRequestAware को लागू करने की कोशिश की, लेकिन यह काम नहीं किया।

क्या इंटरसेप्टर में HttpServletRequest प्राप्त करने के कोई बेहतर तरीके हैं?

+0

तुम क्यों इंटरसेप्टर में क्या ज़रूरत है 'HttpServletRequest'? –

+0

मैं विकसित करना चाहता हूं और इंटरसेप्टर जो अजाक्स के अनुरोध को सीधे यूआरएल से कॉल करने से रोकता है। कृपया http://stackoverflow.com/questions/14621539/how-to-determine-whether-a-request-is-ajax-or- असामान्य देखें। यह इंटरसेप्टर इंटरसेप्टर स्टैक में होगा जो इन अनुरोधों को रोक देगा। –

उत्तर

4

सर्वलेट सामग्री जिन्हें आप servletConfig इंटरसेप्टर का संदर्भ दे सकते हैं। इस इंटरसेप्टर को बुलाए जाने के बाद आप ServletActionContext से सर्वलेट सामान प्राप्त कर सकते हैं।

HttpServletRequest request = ServletActionContext.getRequest(); 
0

आप ActionInvoction कोशिश getInvocationContext() इसके बारे में उदाहरण के लौटने "ActionContext" इस पर .get(HTTP_REQUEST); कोशिश करेंगे मिल जाएगा।

या

उपयोग

ServletActionContext.getRequest() 
4

आप ActionInvocation#getInvocationContext() उपयोग करने के लिए आपके अनुरोध को पुनः प्राप्त करने की जरूरत है।

public String intercept(ActionInvocation invocation) throws Exception { 
    ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); 
    // ... 
} 
+1

अंदरूनी इंटरसेप्टर का उपयोग करने के लिए इसे अनुमोदित उत्तर दिया जाना चाहिए। –

1

उपयोग

final HttpServletRequest request = (HttpServletRequest) ActionContext.getContext() 
               .get(ServletActionContext.HTTP_REQUEST); 

यह मेरे लिए काम किया

+0

यह वही कोड है जो ओपी में है। –

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