JSTL ، الفاصوليا ، والمكالمات الطريقة
سؤال
أنا أعمل على JSP حيث أحتاج إلى استدعاء أساليب على الكائن الذي يأتي من الفول. لا يستخدم الإصدار السابق من الصفحة JSTL ويعمل بشكل صحيح. الإصدار الجديد الخاص بي يحتوي على مجموعة مثل هذا:
<jsp:useBean id="pageBean" scope="request" type="com.epicentric.page.website.PageBean" />
<c:set var="pageDividers" value="<%= pageBean.getPageDividers() %>" />
<c:set var="numColumns" value="${pageDividers.size()}" />
المتغير pageDividers
هو List
هدف.
أواجه هذه المشكلة: عندما أطلب pageDivider
حجم ، يتم إلقاء استثناء. أعلم أن هذا خطأ بسيط JTSL - ما الخطأ الذي أفعله؟
رسالة الخطأ هي:
يجب استخدام حجم الوظيفة مع بادئة عندما لا يتم تحديد مساحة الاسم الافتراضية
كيف يمكنني الوصول بشكل صحيح أو استدعاء طرق بلدي pageDividers
هدف؟
المحلول
عند استخدام مشغل DOT للوصول إلى الممتلكات في JSTL ، ${pageDividers.size}
(رقم () مطلوب) النتائج في مكالمة إلى طريقة تدعى getSize()
.
منذ java.util.list يقدم طريقة تسمى size()
(عوضا عن getSize()
) لن تتمكن من الوصول إلى طول القائمة باستخدام هذا الرمز.
من أجل الوصول إلى حجم القائمة ، تقدم JSTL ملف FN: الطول وظيفة ، تستخدم مثل
${fn:length(pageDividers)}
لاحظ أنه من أجل استخدام fn مساحة الاسم ، يجب أن تعلن ذلك على النحو التالي
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
بالإضافة إلى ذلك ، يمكن استخدام نفس الوظيفة مع أي نوع مجموعة ، ومع الأوتار أيضًا.
نصائح أخرى
للوصول إلى خاصية الفول باستخدام EL ، يمكنك ببساطة تسمية الخاصية (لا تستدعي الطريقة). لذلك دعنا نقول أن لديك طريقة تسمى GetSize () في الفول بعد ذلك
${pageDividers.size}
لاحظ لا ().
تحرير: آسف ... ارتكب خطأ في المنشور الأصلي.