Einschließlich JSP-Seite in einer anderen JSP-Seite, wie mehrere HEAD / Körperabschnitte zu vermeiden?

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

  •  12-09-2019
  •  | 
  •  

Frage

Ich mag eine JSP-Seite in einer anderen JSP-Seite aufzunehmen. Lassen Sie uns sagen, dass ich master.jsp haben, die slave.jsp ist inkl.

Wie slave.jsp seinen eigenen <head> Abschnitt hat für den Umgang mit JavaScript und CSS, ist es eine Möglichkeit, oder vielleicht eine andere Methode, um den masterand slave HEAD zu fusionieren s Abschnitt zu einem einzigen? Auch das gleiche gilt für die BODY s Abschnitt erfolgen sollte.

Ich habe mit sitemesh vor kurzem aber ich denke, ziemlich unpraktisch ist eine Vorlage für jede Seite einrichten.

War es hilfreich?

Lösung

Ich habe für diese Lösung ging, indem ein Parameter , wenn einschließlich der Seite.

in 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>

und dann in slave.jsp der Parameter gelesen und die benutzerdefinierten Teil der Seite gerendert wird.

<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>

nicht zu schön zu sehen, aber die Arbeit. Auf diese Weise bin ich in der Lage, die Vervielfältigung von HEAD und BODY Teilen zu entfernen.

Andere Tipps

Sie können und sollten zwei <html> Dokumente in nicht miteinander verschmelzen. Dies würde ungültige Ausgabe. Besser sind CSS / JS bedingt mit Hilfe von JSTL < a href = "http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/c/if.html" rel = "nofollow noreferrer"> c:if oder c:choose Tags.

Grund Beispiel:

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

Außerhalb sitemesh, bist du ziemlich viel Glück. Allerdings würde ich Ihr Design überdenken, wenn Sie der Meinung sind, dass das Setup pro Seite unpraktisch ist. Wie viele Seiten werden Ihre app?

Sie können auch die bedingte Option, erweitern und eine meta.jsp machen (zum Beispiel), die für jeden des Kopfelementes einen Map enthält - Meta-Tags, CSS hrefs, Skript hrefs, und den Namen des jsp als Schlüssel verwenden in dieser Karte. Dann rufen Sie request.getRequestURI(), und zeigen, was Sie in der Karte unter diesem Schlüssel zugewiesen sind. Nicht eine sehr schöne Lösung, aber arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top