كيف يمكنني إعطاء تعبيرات EL كمعلمات في المتداخلة التخطيط الاستراتيجي المشترك به 2.0؟
سؤال
وأريد أن أفعل شيئا من هذا القبيل لاستدعاء علامة JSP 2.0:
<mytags:foo abc="<%=def%>">
<mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>
وأين يتم تحديد سلاسل def
وjkl
earielr في ملف التخطيط الاستراتيجي المشترك. لنفترض ملفاتي العلامة تبدو مثل هذا:
وfoo.tag
:
<%@ tag body-content="scriptless" %>
<%@ attribute name="abc" required="true" %>
<div class="${abc}">
<jsp:doBody/>
</div>
وbar.tag
:
<%@ tag body-content="scriptless" %>
<%@ attribute name="ghi" required="true" %>
<div>${ghi}</div>
وأريد إخراج لتبدو مثل هذا:
<div class="def">
<div>jkl</div>
</div>
و(على افتراض def
المتغيرات وjkl
تم تهيئة إلى def
وjkl
، على التوالي، في ملف JSP الدعوة.)
العلامة الخارجي يحصل سمة لها على ما يرام (<div class="def">
) ولكن فشل واحد الداخلي.
هل هذا ممكن؟ أنا على الحصول على الأخطاء التي جكل لا يمكن حلها.
المحلول
ملاحظة السمة body-content="scriptless"
في علامة التوجيه. وهذا يعني أن الجسم محاطة علامة لا يمكن أن يحتوي كود scriptlet (الاشياء <% %>
). تحتاج إلى استخدام EL.
وكان يعمل بالنسبة لي إذا كنت تغيير الاشياء في JSP إلى:
<c:set var="def" value="def"></c:set>
<c:set var="jkl" value="jkl"></c:set>
<mytags:foo abc="${def}">
<mytags:bar ghi="${jkl}"/>
</mytags:foo>
ملحوظة أنني بحاجة إلى إضافة
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>