سؤال

لديّ تطبيق يستخدم 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top