2012-12-05 16 views
7

2 स्प्रिंग MVC सेवाओं कहो? जीईटी या सत्र का उपयोग करने के रूप में दूसरी विधि का उपयोग अवांछनीय है।वसंत MVC प्राप्त/रीडायरेक्ट/पोस्ट

आपके प्रतिक्रियाओं के लिए धन्यवाद!

+1

क्या आपको वास्तव में रीडायरेक्ट की आवश्यकता है? क्यों ''firstMethod' से 'this.secondMethod (param)' को कॉल नहीं किया जा रहा है? – Yevgeniy

+0

इस उदाहरण में मैं कर सकता हूं। लेकिन अगर 'secondMethod' में कई अलग-अलग पैरामीटर हैं जैसे कि '@ कुकी वाल्यू' यह असुविधाजनक होगा। – Nailgun

+0

@Yevgeniy मुख्य कारण मैं जावा विधि को कॉल नहीं कर सकता हूं कि मैं चाहता हूं कि उपयोगकर्ता ब्राउज़र पता बार में '/ secondMethod' रखे। – Nailgun

उत्तर

1

आपको HTTP पोस्ट को HTTP पोस्ट पर रीडायरेक्ट नहीं करना चाहिए। HTTP प्राप्त करें और HTTP पोस्ट दो अलग-अलग चीजें हैं। उन्हें बहुत अलग व्यवहार करने की उम्मीद है (जीईटी सुरक्षित, बेवकूफ और कैशबल है। पोस्ट बेवकूफ है)। उदाहरण के लिए HTTP GET and POST semantics and limitations या http://www.w3schools.com/tags/ref_httpmethods.asp देखें।

आप क्या कर सकते हैं यह है: Annotate secondMethod भी RequestMethod.GET के साथ। फिर आप वांछित रीडायरेक्ट करने में सक्षम होना चाहिए।

@RequestMapping(value = "/secondMethod", method = {RequestMethod.GET, RequestMethod.POST}) 
public String secondMethod(@RequestParam String param) { 
... 
} 

लेकिन ध्यान रखें कि दूसरे विधि को HTTP GET अनुरोधों के माध्यम से बुलाया जा सकता है।

+0

चूंकि POST विधि को कॉल करने के बाद n बार परिणामों की संख्या में परिणाम होगा, POST idempotent नहीं है। –