هل يمكنني تفكيك حلقة JSP foreach مع تخطيطات المشارب

StackOverflow https://stackoverflow.com/questions/1762004

  •  21-09-2019
  •  | 
  •  

سؤال

قل لدي ما يلي لكل منهما في تعريف تخطيط الخطوط

<c:foreach items="${foo}" var="bar" >
     <s:layout-component name="whatever" />
</c:foreach>

ثم عندما أقوم بعمل شيء كهذا

<s:layout-component name="whatever">
    //Do something with bar
</s:layout-component>

يتم تقديم أي مكون قبل وضعه في التخطيط بحيث يكون الشريط فارغًا ويفشل. هل هناك طريقة يمكنني من خلالها إنشاء صفحة كاملة قبل تحليل JSP؟

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

المحلول

رؤية غياب أي إجابة والسؤال الذي يبحث إلى حد ما ، لا أعتقد أن هناك العديد من مستخدمي الخطوط هنا. إذن ها هي سنتي:

هذه بالتأكيد مشكلة النطاق. ال <s:layout-component> لا يمكن الوصول إلى نطاق الصفحة/الحلقة للصفحة الأصل. توجد مشكلة مماثلة في JSP/JSTL عندما تفعل أ <jsp:include> داخل <c:forEach>. لا يمكن الوصول إلى متغير الحلقة في مقتطف الرمز المتضمن بواسطة <jsp:include>. ولكن في JSP/JSTL التي يمكن حلها عن طريق تمرير أ <jsp:param> على طول <jsp:include>. ألقيت نظرة سريعة في وثائق المشارب واكتشفت أ <stripes:param>. معرفة ما إذا كان ذلك يساعد. على الأقل ، يوجد مقرها JSP/JSTL SSCCE للحصول على الفكرة:

main.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% 
    // Just for demo purposes. Do NOT use scriptlets in real work.
    request.setAttribute("items", java.util.Arrays.asList("foo", "bar", "waa"));
%>

<c:forEach items="${items}" var="item">
    <jsp:include page="include.jsp">
        <jsp:param name="item" value="${item}" />
    </jsp:include>
</c:forEach>

تشمل. jsp

${param.item}<br>

انتاج:

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