मेरे Play ऐप में, मेरे पास कई क्रियाएं हैं (उदा। "एक इकाई" हटाएं) जिसे विभिन्न पृष्ठों से ट्रिगर किया जा सकता है। कार्रवाई ट्रिगर होने के बाद, मैं कार्रवाई को करने से पहले उपयोगकर्ता को उस पृष्ठ पर वापस रीडायरेक्ट करना चाहता हूं, जिस पर वे थे। क्या Play में इसका उपयोग करने के लिए कोई अच्छा पैटर्न है?एक क्रिया के बाद पिछले पृष्ठ पर रीडायरेक्ट करने के लिए पैटर्न
8
A
उत्तर
2
यही वह अंत है जो मैं अंत में आया था, हालांकि यह विशेष रूप से सुरुचिपूर्ण नहीं है, और मुझे इसे करने के बेहतर तरीकों में दिलचस्पी होगी।
@(implicit request: RequestHeader)
...
<form action="@routes.Controller.doStuff()" method="post">
<input type="hidden" name="previousURL" value="@request.uri"/>
...
</form>
तब मेरे नियंत्रक में
:: मैं वर्तमान पृष्ठ URL के साथ अपने फार्म के लिए एक छिपा इनपुट जोड़ा
def doStuff() = Action { implicit request =>
val previousURLOpt: Option[String] =
for {
requestMap <- request.body.asFormUrlEncoded
values <- requestMap.get("previousURL")
previousURL <- values.headOption
} yield previousURL
previousURLOpt match {
case Some(previousURL) =>
Redirect(new Call("GET", previousURL))
case None =>
Redirect(routes.Controller.somewhereElse)
}
}
4
आप आसानी से अपने टेम्पलेट में @request.getHeader("referer")
उपयोग कर सकते हैं, उदाहरण के लिए यदि आप एक बटन को रद्द किया है जो आपको पिछले पृष्ठ पर रीडायरेक्ट करना चाहिए, इसका उपयोग करें:
<a href="@request.getHeader("referer")">Cancel</a>
इस तरह, आपको अपने टेम्पलेट्स पर कोई अतिरिक्त जानकारी पास करने की आवश्यकता नहीं है। (नाटक 2.3.4 के साथ परीक्षण)
1
सबसे आसान तरीका है मैं यह कर पाया है, अपने नियंत्रक विधि के भीतर से है, इस का उपयोग करें:
:String refererUrl = request().getHeader("referer");
तो, आप की तरह कुछ करना चाहते हैं
public static Result query(String queryStr, int page, int offset) {
String refererUrl = request().getHeader("referer");
Logger.info("refererUrl: " + refererUrl);
if(queryStr.length() < 3) {
flash(Application.FLASH_ERROR_KEY, "type a longer search than '" + queryStr.trim() + "'");
return redirect(refererUrl);
}
return ok(listings.render(searchService.searchListings(queryStr)));
}
ध्यान रखें कि आपको एक फ्लैश संदेश के साथ रीडायरेक्ट() और रेंडर() नहीं करना चाहिए।
संबंधित मुद्दे
- 1. Yii2 पिछले पृष्ठ पर रीडायरेक्ट
- 2. जेएसएफ नेविगेशन पिछले पृष्ठ पर रीडायरेक्ट
- 3. प्रमाणीकरण के बाद अनुरोधित पृष्ठ पर रीडायरेक्ट
- 4. वसंत सुरक्षा: लॉगआउट के बाद पिछले यूआरएल पर रीडायरेक्ट
- 5. लॉगिन (रेल) के बाद उपयोगकर्ता को पिछले पृष्ठ पर लौटें
- 6. PHP सबमिट करने के बाद किसी अन्य पृष्ठ पर रीडायरेक्ट
- 7. लॉगिन के बाद पिछले यूआरएल पर रीडायरेक्ट करना - रेल
- 8. एक पृष्ठ पर एक पृष्ठ से दूसरे पर एक प्रतिक्रिया। रीडायरेक्ट करने के लिए सही तरीका
- 9. पिछले यूआरएल पर रीडायरेक्ट?
- 10. डाक अनुरोध के बाद Django में पिछले पृष्ठ पर रीडायरेक्ट कैसे करें
- 11. पिछले पृष्ठ पर रीडायरेक्ट करते समय परिवर्तनीय डेटा कैसे भेजें
- 12. सिम्फनी सुरक्षा पृष्ठ पर लॉग इन करने के लिए रीडायरेक्ट
- 13. लॉगिन के बाद # (हैश) चिह्न वाले पृष्ठ पर रीडायरेक्ट करें
- 14. POST अनुरोध के बाद उसी पृष्ठ पर रीडायरेक्ट कैसे करें
- 15. Django में रीडायरेक्ट/उसी (पिछले) पृष्ठ पर वापस लौटें?
- 16. किसी पृष्ठ को 5 सेकंड के लिए किसी अन्य पृष्ठ पर रीडायरेक्ट करना, फिर रीडायरेक्ट करना
- 17. जावास्क्रिप्ट: उपयोगकर्ता के स्क्रॉलिंग के बाद एक क्रिया करें
- 18. एएसपीएक्स पेज एक नए पेज पर रीडायरेक्ट करने के लिए
- 19. django, फॉर्म POST सबमिट करने के बाद पिछले पृष्ठ पर लौटें
- 20. कैसे dispatcher.forward (अनुरोध, प्रतिक्रिया) के बाद सर्वलेट में अनुरोध से पिछले पृष्ठ URL प्राप्त करने
- 21. सेलेनियम में एक पृष्ठ रीडायरेक्ट के लिए कैसे प्रतीक्षा करें?
- 22. फॉर्म सबमिट करने के बाद रीडायरेक्ट (सीएसआर)
- 23. एक ही पृष्ठ पर रीडायरेक्ट लंगर
- 24. रेल 3 और डिवाइसेज: साइनअप के बाद पृष्ठ पर रीडायरेक्ट करना (पुष्टि करने योग्य)
- 25. पिछले पृष्ठ पर वापस जाएं
- 26. यदि पृष्ठ यूआरएल के माध्यम से पृष्ठ तक पहुंचने का प्रयास करता है तो पृष्ठ एक पृष्ठ को पिछले पृष्ठ पर कैसे रीडायरेक्ट कर सकता है?
- 27. एक ब्लॉग के बाद एक रीडायरेक्ट का पालन करने से jQuery AJAX को कैसे रोकें?
- 28. रखरखाव पृष्ठ पर अस्थायी रीडायरेक्ट
- 29. जावास्क्रिप्ट: एक पृष्ठ पर रीडायरेक्ट करें?
- 30. सभी आईई उपयोगकर्ताओं को एक नए पृष्ठ पर रीडायरेक्ट करने के लिए कैसे करें
क्या आप रेफरर को request.getHeader के माध्यम से पुनर्प्राप्त करने से बेहतर कुछ ढूंढ रहे हैं और इसे फ़्लैश या सत्र में संग्रहीत कर रहे हैं? मुझे बेहतर तरीकों के बारे में सुनने में दिलचस्पी होगी। अपडेट: सिर्फ एहसास हुआ कि आपने स्कैला के बारे में पूछा था। –
@alihaider मैंने नीचे उपयोग किए गए समाधान को चिपकाया है, लेकिन शायद रेफरर का उपयोग करना बेहतर होगा? –
यह भी देखें http://stackoverflow.com/questions/14891988/redirect-to-referer-after-a-post-request –