إعادة توجيه الربيع: قضية بادئة
-
26-09-2019 - |
سؤال
لديّ تطبيق يستخدم Spring 3. لديّ View Resolver يقوم بإنشاء وجهات نظراتي بناءً على سلسلة. لذلك في وحدات التحكم الخاصة بي لدي طرق مثل هذه.
@RequestMapping(...)
public String method(){
//Some proccessing
return "tiles:tileName"
}
أحتاج إلى إرجاع عرض RedirectView لحل التقديم المكرر بسبب تحديث الصفحة في المتصفح ، لذلك فكرت في استخدام Spring Redirect: Prefix. المشكلة هي أنه لا يتم إعادة التوجيه إلا عندما أقوم بتغيير عنوان URL للبادئة (وليس اسم المحلول الذي يمكن أن يفهمه المحلول). أردت أن أفعل شيئًا كهذا:
@RequestMapping(...)
public String method(){
//Some proccessing
return "redirect:tiles:tileName"
}
هل هناك أي طريقة لاستخدام RedirectView مع السلسلة (اسم العرض القابل للحل) أحصل عليه من كل طريقة وحدة تحكم؟
شكرًا
المحلول
المكالمات المسبقة عن طريق إعادة التوجيه: هو عنوان URL ، يتم إرساله في متصفح قياسي 302 إعادة توجيه. لا يمكنك إعادة التوجيه إلى عرض ، لأن العرض ليس عنوان URL. بدلاً من ذلك ، ستحتاج إلى رسم خرائط جديد لـ "نجاح" ثم إعادة توجيه إلى ذلك بدلاً من ذلك
@RequestMapping("processing.htm")
public String method(){
//Some proccessing
return "redirect:success.htm"
}
@RequestMapping("success.htm")
public String method(){
return "tiles:tileName"
}
تعمل هذه الحالة بشكل جيد عندما تحتاج فقط إلى عرض صفحة "شكرًا لك" ، والتي لا تتطلب أي بيانات محددة من مرحلة المعالجة. ومع ذلك ، إذا كانت صفحة النجاح الخاصة بك بحاجة إلى إظهار بعض المعلومات من المعالجة ، فهناك طريقتان للقيام بذلك.
1) تمرير المعلومات الموجودة في عنوان URL باعتبارها وظيفة GET ("إعادة التوجيه: Success.htm؟ Message = Hi"). هذا يمكن اختراقه بشكل لا يصدق ، وبالتالي غير موصى به للغاية.
2) الطريقة الأفضل هي تخزين المعلومات في جلسة HTTP ، باستخدام @SessionAttributes
و @ModelAttribute