Includendo la pagina JSP in un'altra pagina JSP, come evitare più sezioni HEAD/BODY?

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

  •  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 masterE 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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top