سؤال

في ملف JSP لدي هذا الإعلان:

<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>

هذا الإعلان يعمل بشكل جيد مع Glassfish 2.1، ومع ذلك، عندما أتحول إلى Tomcat 6.0، يتم إلقاء الاستثناءات:

القيمة الخاصة بسمة فئة الاستعمال java.util.arrielist غير صالحة.

هل هناك أي مكتبة غاب عن Tomcat التي تجعلها تتصرف مختلفة عن الأسماك الزجاجية 2.1؟

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

المحلول

El لا يدرك الأنواع المعلمة، لذلك ليست هناك حاجة للقيام بذلك. في JSP / EL، لا توجد شيكات زمنية تجميع على الإطلاق. EL أكثر تستند إلى انعكاس. ومع ذلك، فوجئت بعض الشيء بأنه "يعمل" في Glassfish لأنه غير محدد في JSP / El Specifciation.

بصرف النظر عن كل شيء، jsp:useBean غير ضروري إلى حد ما في تطبيق MVC لائق حيث Servlet تم استخدامها للتحكم في الطلبات ومعالجتها مسبقا.

List<Product> procucts = productDAO.list();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);

ال products هو الآن يمكن الوصول إليها فقط في EL ${products}. وبعد لا حاجة ل jsp:useBean.

نصائح أخرى

إذا كنت تتعامل مع رمز إرث واستمتع ببساطة بالتخلص من جميع تحذيرات JSP من النوع الخام، فقد ترغب في استبدال سطرك باستخدام هذا واحد:

<% request.setAttribute("products", 
       new java.util.ArrayList<sgt.supermarket.entity.Product>()); %>

لكن بالدك لا يزال على حق: عند استخدام نمط MVC الكلاسيكي، فمن الأفضل إنشاء قائمة المنتجات هذه في وحدة التحكم وليس في طريقة العرض. وإذا كنت تستخدم نمط عرض أولا، فأنا أقترح كتابة علامة JSP الخاصة بك التي تنشئ ويمتلأ قائمة المنتجات هذه في كود Java النظيف.

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