كيف يمكنني استخدام معلمة التعداد في الدعامات 2؟

StackOverflow https://stackoverflow.com/questions/1624053

  •  06-07-2019
  •  | 
  •  

سؤال

أحاول الحصول على إجراء في Struts 2 للعمل مع Enum كمعلمة إدخال.ما قمت به حتى الآن يبدو كالتالي:

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

  public void setModule(Module module) {
    this.module = module;
  }
  public Module getModule() {
    return module;
  }
}

ولكن عند محاولة استخدام هذا، أحصل على خطأ في تحويل xwork، ولا يتم تنفيذ الإجراء نفسه.هل يمكنني أن أجعل هذا يعمل كما هو، أم يجب أن أقدم setModule(String) بنفسي؟

يحرر:أنا أستخدم الدعامات 2.1.6 عنوان URL الذي أحاول:/test.action?module=value1

هل كانت مفيدة؟

المحلول

يجب أن تربط سلسلة بالتعداد على الفور.أعتقد أن محول نوع التعداد كان في التكوين الافتراضي منذ أن أعتقد 2.1.x.

  • ما هو إصدار الدعامات 2 الذي تستخدمه؟

إذا لم تكن متأكدًا مما يلي في ملفي xwork-conversion.properties في التطبيق 2.0.14

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

يحرر:ردًا على التعليق، إذا كنت بحاجة إلى تجاهل حالة تعيين التعداد، فلديك الاختيارات التالية:

  • قم بتغيير قيمة التعداد إلى أحرف صغيرة بالفعل - وليس أسلوبًا رائعًا ويمكن أن يجعل الكود الخاص بك يبدو غريبًا بعض الشيء
  • اكتب محول نوع جديد غير حساس لحالة الأحرف لـ java.lang.Enum (فقط انسخ xwork واحد وقم برفع الإدخال الذي أعتقده)
  • قم بإضافة setModule(String) جديد لهذه الحالة المحددة

نصائح أخرى

ولقد واجهت مشكلة مشابهة عند إعادة توجيه من عمل إلى عمل إعادة توجيه (بدلا من العمل إلى الأمام)، والدعامات لا تعترف بشكل صحيح أنا باستخدام List<Enum> المعلمة واضطررت لاستخدام وسيلة وكيل لتحويل من سلسلة المعلمة إلى List<Enum>.

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