2012-11-23 15 views
7

डुप्लिकेट सबमिशन से बचें हाय सब मुझे कुछ जेएसपी पेज मिल गए हैं और मेरे रूपों को संभालने के लिए struts2 का उपयोग कर रहा हूं। उपयोगकर्ता द्वारा फ़ॉर्म सबमिट करने के बाद, पता बार में दिखाया गया यूआरएल कुछ हो जाता है। प्रतिक्रिया, इसलिए जब उपयोगकर्ता पृष्ठ को रीफ्रेश करता है, तो फॉर्म फिर से सबमिट हो जाते हैं। इससे मैं किस तरह निपट सकता हूं? एक फॉर्म जमा करने के बाद।स्ट्रूट्स 2 जेएसपी पेज

उत्तर

4

लक्ष्य रूपों में से डुप्लिकेट प्रविष्टि को रोकने के लिए है, तो token इंटरसेप्टर http://struts.apache.org/2.x/docs/token-interceptor.html या tokenSession इंटरसेप्टर http://struts.apache.org/2.x/docs/token-session-interceptor.html का उपयोग करें।

यदि आप फिर से सबमिट किए बिना सबमिट करने के बाद पृष्ठ को ताज़ा करना चाहते हैं तो फिर कार्रवाई पर रीडायरेक्ट करें जहां आप केवल परिणाम नहीं दिखाते हैं। इसके लिए redirectAction परिणाम का उपयोग करें।

+0

धन्यवाद आप एलेक्जेंडर एम .... – edaklij

1

POST REDIRECT GET

यह पैटर्न ताज़ा करने पर प्रपत्र की फिर से प्रस्तुत करने को रोकने के लिए पीछा किया जाना चाहिए। इसका मतलब है, POST अनुरोध सबमिट करने के बाद, POST को GET का उपयोग करके गंतव्य पृष्ठ लाने के लिए REDIRECT प्रतिक्रिया भेजनी चाहिए। इस पैटर्न के साथ, यदि उपयोगकर्ता पृष्ठ को रीफ्रेश करता है, तो केवल GET अनुरोध फिर से होता है, इसलिए उसी पृष्ठ को सर्वर में कुछ भी अपडेट किए बिना लाया जाता है।

यह वेब के लिए अनुशंसित एक आम डिजाइन पैटर्न है। Google इसके बारे में बहुत सारे संसाधन प्रदान करेगा।

3

अन्य दोनों उत्तरों के लिए +1।

Post/Redirect/Get प्रत्येक वेब तकनीक के लिए क्लासिक पैटर्न है।

Token Interceptor स्ट्रेट्स 2 का उपयोग करते समय जाने का एक और तरीका है; एचटीएमएल 5 के window.history.pushState:

वहाँ जाने के लिए एक तीसरा रास्ता है, अगर आप पुराने ब्राउज़र, या Javascript को अक्षम साथ ब्राउज़रों के साथ रेट्रो-संगतता के बारे में परवाह नहीं है है।

पृष्ठ लोड होने के बाद बस मूल URL को रीसेट करें, और F5 दबाकर अनुरोध को दोबारा सबमिट करने के बजाय मूल पृष्ठ प्राप्त होगा।

$(document).ready(function() { 
    window.history.pushState("","", "myOriginalUrlWithNoParams"); 
}); 
+1

एचटीएमएल 5 चाल के लिए +1। –

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