Inclure une page JSP dans une autre page JSP, comment éviter plusieurs sections HEAD/BODY ?

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

  •  12-09-2019
  •  | 
  •  

Question

Je souhaite inclure une page JSP dans une autre page JSP.Disons que j'ai master.jsp cela comprend slave.jsp.

Comme slave.jsp a sa propre <head> section pour traiter JavaScript et CSS, existe-t-il un moyen ou peut-être une autre méthode pour fusionner le masteret slave TÊTEs section en une seule ?Il faudrait également faire la même chose pour le CORPSsection.

j'ai utilisé sitemesh récemment, mais je pense qu'il est assez peu pratique de configurer un modèle pour chaque page.

Était-ce utile?

La solution

Je suis allé à cette solution en faisant passer un paramètre en incluant la page.

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>

et slave.jsp le paramètre est lu et la partie personnalisée de la page est rendue.

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

pas trop belle à voir, mais travailler. De cette façon, je suis en mesure d'éliminer la duplication des pièces HEAD et BODY.

Autres conseils

Vous ne pouvez pas et ne doit pas fusionner deux documents de <html> dans l'autre. Cela produira une sortie non valide. Mieux comprendre CSS / JS conditionnelle avec l'aide de JSTL < a href = "http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/c/if.html" rel = "nofollow noreferrer"> c:if ou noreferrer c:choose balises .

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

En dehors de SiteMesh, vous êtes à peu près pas de chance. Cependant, je reconsidérer votre conception si vous pensez que la configuration par page est peu pratique. Combien de pages sera votre application ont?

Vous pouvez également étendre l'option conditionnelle et créer un meta.jsp (par exemple), qui contient un Map pour chacun des éléments principaux - balises méta, css hrefs, script hrefs et utilisez le nom du jsp comme clé dans cette carte.Puis tu appelles request.getRequestURI(), et montrez tout ce que vous avez mis sur la carte sous cette clé.Ce n'est pas une très belle solution, mais cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top