it-swarm.com.de

Wie kann eine JSP-Layoutvorlage am besten erstellt werden?

Mögliches Duplikat:
JSP-Tricks zur Vereinfachung des Templatings?

Ich bin neu in JSPs und Servlets. Ich frage mich, ob es eine gute Möglichkeit gibt, einen Layout-JSP zu erstellen und auf ähnlichen JSP-Seiten wie asp.net-Masterseiten wiederzuverwenden.

Ich habe es gegoogelt, manche Leute sagen use templates http: //Java.Sun.com/developer/technicalArticles/javaserverpages/jsp_templates dass jstl tag library verwendet. Es heißt, einen Tag wie diesen zu setzen:

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

aber ich bekomme eine Fehlermeldung (weil sich jstl.jar und standard.jar im Verzeichnis WEB-INF/lib/befinden).

Einige sagen jedoch, dass JSTL-Vorlagen Probleme mit diesen Struts OR Tiles OR ??? ...... JSP-Vorlagenlösung haben

Ich würde mich freuen, wenn ich den besten Weg kenne.

BEARBEITEN: Ich muss das Layout der Seite in Teile wie Inhalt, Kopfzeile usw. aufteilen und diese Teile auf der Seite festlegen, die die Layoutvorlage verwendet, genau wie die asp.net-Masterseite.

32
Ashkan

Fügen Sie Folgendes in WEB-INF/tags/genericpage.tag ein

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

Um dies zu benutzen:

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

Das macht genau das, was du denkst!

Dies war Teil einer großartigen Antwort von Will Hartung am dieser Link .

84
Ashkan