java.lang.nosuchmethodexception: com.sun.proxy. $ proxy58.list حل الخطأ
هناك دائمًا بعض الاستثناءات غير المتوقعة عند تشغيل SSH على الويب. هناك العديد من الأشياء التي لا تكون حذراً أو مهملًا. لذلك ، ستكون الحلول مختلفة. قد تكون الحلول التي واجهها الآخرون غير صالحة بالنسبة لك. تمامًا مثل الاستثناء الذي أبلغت عنه أعلاه ، كنت أستخدم Baidu عدة مرات ، والإجابة التي قدمتها لي ليست أكثر من إضافة جملة إلى AOP ، لكنني آسف جدًا ، لقد أضفتها إلى ما هو غير صالح! لذا فإن نفس الشيء صحيح ، لا يزال يتعين عليك حل شذوذك.
أولاً ، اسمحوا لي أن أشرح بنية SSH وأسباب الاستثناء في ممارستي هذه المرة.
Struts-type من نوع الإطار 2.2+Hibernate4.2+Spring4.0 ، غرفة الحاويات tomcat7.0. في العمل ، كتبت baseaction من الدرجة الأساسية ، وورث الإجراءات ، ونفذت واجهة النموذج. الرمز كما يلي:
-----------@component@exctactional ---------- public abstract class baseaction <T> يمتد Actionsupport على طراز Driven <T> {private Static Final Long SerialVersionuid = 27196850130729741L ؛ Resource (name = "roleserviceImpl") محمية Roleservice Roleservice ؛ @Resource (name = "Tripleservice") محمية Excessmentserviceervice ؛ Resource (name = "UserService") محمية UserService uservice ؛ نموذج t المحمي. public baseaCtion () {parameterizedType pt = (parameteristype) this.getClass (). getGenericSuperClass () ؛ suppressWarnings ("غير محدد") class <T> clazz = (class <T>) pt.getActualTyPearguments () [0] ؛ حاول {model = clazz.newinstance () ؛ } catch (استثناء e) {رمي new runTimeException (e) ؛ }} public t getModel () {return model ؛ }} ميزة ذلك هي أن الإجراء المقابل لكل مكون يحتاج فقط إلى إخبار BASEACTION بالجنس للتنفيذ ، ومن ثم يحتاج إلى إكمال منطقه. بالنسبة لكل إجراء لتنفيذ Actionupport ، هذا هو حل أساسي وسهل التفكير.
ثم ، في كل إجراء ، يتم استدعاء مكون الخدمة لتنفيذ وظائفه الخاصة. في كل إجراء ، يتم استخدام التعليقات التوضيحية @component ("DepartmentAction") و SSCOPE ("النموذج الأولي"). ومع ذلك ، بمجرد ممارسة الاختبار ، سيظهر استثناء java.lang.nosuchmethodexception: com.sun.proxy. $ proxy58.list (). بعد التحقق ، وجد أن السبب هو:
BASEACTY مجردة ، ليس من المنطقي إضافة transactional إليها.
تتم إدارة transactional بحلول الربيع. يجب إنشاء الكائنات التي تديرها الربيع كوكلاء. بالنسبة لفئة مجردة ، لا يمكن أن يكون جديدًا في كائن. فقط فئة التنفيذ الملموسة لفئة مجردة يمكن أن تكون وكيل بحلول الربيع.
لذلك ، فإن إزالة transactional على baseaction هو سبب هذا السؤال.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!