Includendo la pagina JSP in un'altra pagina JSP, come evitare più sezioni HEAD/BODY?
-
12-09-2019 - |
Domanda
Vorrei includere una pagina JSP in un'altra pagina JSP.Diciamo che ho master.jsp
questo è incluso slave.jsp
.
COME slave.jsp
ha il suo <head>
sezione per gestire JavaScript e CSS, esiste un modo o forse un altro metodo per unire i file master
E slave
TESTAs sezione in una sola?Lo stesso dovrebbe essere fatto anche per il CORPOsezione s.
Ho usato sitemesh recentemente, ma penso che sia abbastanza poco pratico impostare un modello per ogni pagina.
Soluzione
Sono andato per questa soluzione per il superamento di un parametro quando compresa la pagina.
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>
e poi in slave.jsp il parametro viene letto e la parte personalizzata della pagina viene eseguito il rendering.
<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>
non troppo bello da vedere, ma lavorare. In questo modo sono in grado di rimuovere la duplicazione di HEAD
e BODY
parti.
Altri suggerimenti
Si può e non deve unire due documenti <html>
a vicenda. Questo produrrebbe uscita valido. Meglio comprendere CSS / JS condizionale con l'aiuto di JSTL < a href = "http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/c/if.html" rel = "nofollow noreferrer"> c:if
o noreferrer tag c:choose
.
Esempio di base:
<head>
<script type="text/javascript" src="global.js"></script>
<c:if test="${isAdminPage}">
<script type="text/javascript" src="admin.js"></script>
</c:if>
</head>
Al di fuori di SiteMesh, sei praticamente fuori di fortuna. Tuttavia vorrei rivedere il vostro disegno se si pensa che l'impostazione per pagina è impraticabile. Quante pagine sarà il vostro app avere?
Potresti anche estendere l'opzione condizionale e creare a meta.jsp
(ad esempio), che contiene a Map
per ciascuno degli elementi head: meta tag, css href, script href e utilizza il nome del jsp come chiave in quella mappa.Poi chiami request.getRequestURI()
, e mostra tutto ciò che hai inserito nella mappa sotto quella chiave.Non è una soluzione molto bella, ma funziona.