web-dev-qa-db-fra.com

Quelle est la meilleure façon de créer un modèle de mise en page JSP?

Duplicata possible:
Astuces JSP pour faciliter les modèles?

Je suis nouveau sur les JSP et les servlets, je me demande s'il existe un bon moyen de créer une mise en page jsp et de la réutiliser sur des pages jsp similaires, quelque chose comme des pages maîtres asp.net.

Je l'ai googlé, certaines personnes disent utiliser des modèles http://Java.Sun.com/developer/technicalArticles/javaserverpages/jsp_templates qui utilise la bibliothèque de balises jstl. Il dit de mettre une balise comme celle-ci:

<%@ taglib uri='/WEB-INF/tlds/template.tld' prefix='template' %>

mais j'obtiens une erreur (car jstl.jar et standard.jar sont dans le répertoire WEB-INF/lib /).

Cependant, certains disent que le modèle jstl a des problèmes en fonction de cela Struts OR Tiles OR ??? ...... JSP template solution ) =

Je serais heureux de m'aider à connaître la meilleure façon.

EDIT: Ce dont j'ai besoin est de diviser la mise en page de la page en parties comme le contenu, l'en-tête, ... et de définir ces parties dans la page qui utilise le modèle de mise en page, exactement comme la page principale asp.net.

32
Ashkan

Mettez ce qui suit dans WEB-INF/tags/genericpage.tag

<%@tag description="Overall Page template" pageEncoding="UTF-8"%>
<%@attribute name="header" fragment="true" %>
<%@attribute name="footer" fragment="true" %>
<html>
  <body>
    <div id="pageheader">
      <jsp:invoke fragment="header"/>
    </div>
    <div id="body">
      <jsp:doBody/>
    </div>
    <div id="pagefooter">
      <jsp:invoke fragment="footer"/>
    </div>
  </body>
</html>

Pour l'utiliser:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:genericpage>
    <jsp:attribute name="header">
      <h1>Welcome</h1>
    </jsp:attribute>
    <jsp:attribute name="footer">
      <p id="copyright">Copyright 1927, Future Bits When There Be Bits Inc.</p>
    </jsp:attribute>
    <jsp:body>
        <p>Hi I'm the heart of the message</p>
    </jsp:body>
</t:genericpage>

Cela fait exactement ce que vous pensez qu'il fait!

Cela faisait partie d'une excellente réponse de Will Hartung sur ce lien .

84
Ashkan