سؤال

أنا أعمل على 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}

لاحظ لا ().

تحرير: آسف ... ارتكب خطأ في المنشور الأصلي.

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