بما في ذلك JSP صفحة إلى آخر صفحة JSP, كيفية تجنب متعددة رئيس / هيئة أقسام ؟

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

  •  12-09-2019
  •  | 
  •  

سؤال

وأود أن تشمل JSP صفحة إلى آخر صفحة JSP.لنفترض أن لدي master.jsp هذا هو بما في ذلك slave.jsp.

كما slave.jsp الخاصة <head> قسم التعامل مع جافا سكريبت و CSS, هل هناك طريقة أو ربما طريقة أخرى لدمج masterو slave رئيسs القسم إلى واحد واحد ؟ أيضا نفس الشيء يجب فعله من أجل الجسمs القسم.

لقد تم استخدام sitemesh في الآونة الأخيرة ولكن أعتقد أنه من غير العملي تماما لإعداد قالب لكل صفحة.

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

المحلول

ذهبت لهذا الحل عن طريق تمرير معامل عند بما في ذلك الصفحة.

في master.jsp.

<head>
  blablabla
  <c:import url="slave.jsp">
    <c:param name="sectionName" value="HEAD" />
  </c:import>
</head>
<body>
  blablabla
  <c:import url="slave.jsp">
  </c:import>
</body>

ثم في slave.jsp. تتم قراءة المعلمة والجزء المخصص من الصفحة.

<c:choose>
  <c:when test="${param.sectionName == 'HEAD'}">
     head section here [without the <HEAD> tags !]
  </c:when>
  <c:otherwise>
     body section here [without the <BODY> tags !]
  </c:otherwise>
</c:choose>

ليس لطيفا جدا أن نرى ولكن العمل. بهذه الطريقة أنا قادر على إزالة ازدواج HEAD و BODY القطع.

نصائح أخرى

لا يمكنك ويجب عدم دمج اثنين <html> المستندات في بعضها البعض. هذا من شأنه أن ينتج إخراج غير صالح. أفضل تشمل CSS / JS بشكل مشروط بمساعدة jstl. c:if أو c:choose العلامات.

المثال الأساسي:

<head>
    <script type="text/javascript" src="global.js"></script>
    <c:if test="${isAdminPage}">
        <script type="text/javascript" src="admin.js"></script>
    </c:if>
</head>

خارج خريطة الموقع، أنت بعيد جدا من الحظ. ومع ذلك، أود إعادة النظر في التصميم الخاص بك إذا كنت تعتقد أن الإعداد لكل صفحة غير عملي. كم عدد الصفحات التي ستحصل عليها التطبيق؟

هل يمكن أيضا تمديد مشروط الخيار ، وجعل meta.jsp (على سبيل المثال) ، والذي يحتوي على Map لكل من رئيس العناصر - العلامات الفوقية, css hrefs, النصي hrefs ، واستخدام اسم jsp رئيسيا في تلك الخريطة.ثم اتصل request.getRequestURI(), وتظهر كل ما كنت قد وضعت في الخريطة تحت هذا المفتاح.لا جميلة جدا الحل ، ولكن العامل.

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