- 0
سجل دخول لمتابعه هذا
متابعين
0

نبذة عن ال Jsp Custom Tags باستخدام Netbeans
بواسطة
herch,
-
يستعرض القسم حالياً 0 members
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
بواسطة
herch,
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
تم النشر منذ (معدل)
السلام عليكم،
الJSP تتيح لنا إمكانية إضافة واستعمال وسوم مخصصة custom tags، هذه الوسوم لا تنتمي للوسوم الموجودة بالJSP، وبالتالي فنحن من يحدد تصرفها وبنيتها وكل ما يتعلق بها.
لإضافة وسم ما، يجب علينا أن نضيفه إلى tag library descriptor، وهو ملف xml يحتوي على الوسوم المخصصة التي اضفناها. هذا الملف يحتوي على المعلومات الخاصة بكل وسم: إسمه، ما هي ال attributes الخاصة به، هل لديه محتوى أم أنه وسم فارغ، ال tag handler الخاص به....
ال tag handler هي فئة نقوم بكتابتها، وكل وسم نضيفه يجب أن يكون لديه tag handler مرتبط به. هذه الفئة ترث من SimpleTagSupport، وتحتوي على الطريقة doTag() التي يتم المناداة عليها كل مرة يتم لعثور على الوسم.
أولا ننشئ مشروع جديد، طبعا نختار web application، ونسميه مثلا customTag
tag library descriptor
بعد ذلك ننشئ tag library descriptor جديد. نسميه mytaglib. يجب الإشارة إلى أن كل ال tag library descriptors يجب أن تكون في المجلد WEB-INF أو أحد المجلدات بداخله، لذلك يجب التاكد من اختيار WEB-INF في الخانة Location
الآن حصلنا على tag library descriptor
: tlib-version هو نسخة ال tag library، طبعا نحن من يحدد النسخة.
short-name : هذا العنصر اختياري، وهو فقط يعطي إسما مختصرا لل tag library، لكننا لن نحتاجه.
uri : هذا العنصر هو بمثابة المعرف identifier الخاص بهذه ال tag library، فهو الذي نستعمله في صفحات ال JSP عندما نشير لهذه ال tag lib.
الآن هذه ال tag lib تعتبر فارغة، لأن كل وسم نريد إضافته يجب يكون ممثلا بعنصر <tag>. يمكن أن نضيف هذا العنصر يدويا، لكن Netbeans سيقوم بعمل ذلك تلقائيا عندما ننشئ ال tag handler الخاص بالوسم الذي نريدإضافته.
tag handler
ال tag handler هو فئة ترث من SimpleTagSupport، وتعيد تعريف الطريقة doTag()، هذه الطريقة هي اساس ال custom tags، لأنها هي التي يتم المناداة عليها عند قراءة الوسم المخصص الذي أضفناه، وهي التي تقوم بكل العمل.
ننشئ tag handler جديد
نسميه DateTagHandler، ونحدد الpackage الذي ينتمي إليه. يجب دائما تحديد الpackage لتفادي المشاكل.
هذه النافذة نحدد فيها الخصائص المتعلقة بال tag library والوسم الذي نريد إضافته.
أولا نختار الtag library المرتبط بهذا ال tag handler في الخانة "TLD File".
في الخانة "Tag Name" نحدد إسم الوسم المخصص الذي نريد إضافته.
في الإختيارات Body Content، نختار empty في المثال، لأننا لا نريد من الوسم أن يكون لديه محتوى.
وأهم شيء، يجب اختيار "Add Corresponding Tag to the Tag Library Descriptor"، حتى يقوم ال Netbeans بإضافة الوسم لل Tag Library Descriptor الذي أنشأنا سابقا.
الآن لنلق نظرة على محتوى ال Tag Library Descriptor، ستلاحظون أنه تغير. حيث تمت إضافة العنصر <tag>، الذي يحتوي بدوره على ثلاث عناصر
name : وهو إسم الوسم.
tag-class : وهو ال tag handler
body-content : نوع محتوى الوسم.
الطريقة doTag()
الآن لنعد إلى ال tag handler الذي أنشأنا، أي الفئة DateTagHandler. تلاحظون أنها تحتوي على الطريقة doTag(). سنقوم الآن بكتابة الكود الذي سيتم تنفيذه كل مرة يتم العثور على الوسم date.
داخل الطريقة doTag()، قمنا أولا باسترجاع كائن JspWriter، وهو الذي سيتيح لنا الكتابة في الصفحة JSP التي يتم تنفيذها،
ثم بعد ذلك نقوم بطباعة التاريخ.
تحديد ال Tag Library Descriptor داخل الصفحة JSP وكتابة الوسم المخصص الذي أنشأنا
في الصفحة JSP، نقوم بتحديد ال Tag Library Descriptor
uri : نمرر لهذه الخاصية نفس قيمة العنصر uri الموجود في ال Tag Library Descriptor
prefix : هذه الخاصية تلعب دور namespace، والهدف منها تفادي تداخل أسماء الوسوم
وننادي على الوسم الذي أنشأنا بالشكل التالي
نكتب أولا ال prefix متبوعا بنقطتين ثم إسم الوسم.
والنتيجة
إضافة attributes إلى الوسم
الوسم الذي أنشأناه ليس لديه اي attribute. إذا كنا نريد من هذا الوسم أن يتقبل ال attributes، يجب أن نحدد ذلك في ال Tag Library Descriptor وأيضا في ال tag handler.
في ال Tag Library Descriptor، نضيف إلى العنصر <tag> عنصرا جديدا هو العنصر <attribute>. هذا العنصر يحتوي بدوره على عدة عناصر، لكننا سنستعمل فقط عنصرين، وهما:
name: يمثل إسم الattribute
required: هل هذا ال attribute إجباري أو لا، هذا العنصر ينتظر قيمة boolean
سنقوم الآن بإضافة ال attribute المسمى lng، وسيمثل اللغة التي نريد أن يكتب بها التاريخ.
وهذا هو Tag Library Descriptor بعد التعديل
الآن سنقوم بتعديل ال tag handler.
كل attribute نضيفه يجب أن يكون لديه في ال tag handler متغير باسمه وطريقة setter تغير قيمة المتغير، فمثلا فيما يتعلق بالattribute lng، سنضيف متغيرا له نفس الإسم
وطريقة setter تحدد قيمة ال attribute
الآن لدينا الattribute. ما نريد فعله هو كتابة التاريخ حسب اللغة التي نمررها للattribute lng، لأجل ذلك سنغير الطريقة doTag() لتقوم بالتحقق من قيمة lng، وكتابة التاريخ على أساسه.
وهذا كود ال tag handler بعد التعديل
في هذا الكود استعملنا الفئة SimpleDateFormat، لمعرفة المزيد عن هذه الفئة وكيفية تغيير شكل طباعة التاريخ، يرجى مراجعة الرابط التالي --> كيف أغير شكل طباعة التاريخ؟؟
الآن يكفي أن نحدد قيمة الattribute lng في الصفحة JSP وسيظهر لنا التاريخ بحسب اللغة
المشروع مرفق على شكل ملف war
CustomTag.war.zip
تم تعديل بواسطه herchشارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه