Frage

Wir werden JSTL und benutzerdefinierten JSTL-Tags für eine Art von Template-Engine in unserer JSP / Feder-Projekt verwenden.

Gibt es eine Möglichkeit, einen Tag, das Aussehen ähnlich wie diese zu erstellen:

<div id="site">
    <div id="header">Some title</div>
    <div id="navigation"> SOME DYNAMIC CONTENT HERE </div>
    <div id="content"> ${content} </div>
    <div id="footer"></div>
</div>

und es wie folgt verwendet werden:

<mytags:template>
    <h1>Title</h1>
    <p>My content!</p>
</mytags:template>

d. Verwendung körper Inhalt innerhalb eines benutzerdefinierten JSTL-Tages ...

Das funktioniert:

<mytags:template content="some content... not HTML" />

ist aber nicht sehr nützlich in unserem Fall.

War es hilfreich?

Lösung

ähnlich wie McDowell Antwort, aber mit mehr Flexibilität, ist ein Attribut zu deklarieren, die ein Fragment ist. http://java.sun.com/j2ee/ 1.4 / docs / tutorial / doc / JSPTags5.html # wp89854

z. B., //foo.tag Tag-Datei

<%@ attribute name="greeting" fragment="true" %>
<%@ attribute name="body" fragment="true" %>
<h1><jsp:invoke fragment="greeting" /></h1>
<p>body: <em><jsp:invoke fragment="body" /></em></p>

jsp-Datei

<x:foo>
   <jsp:attribute name="greeting"><b>a fancy</b> hello</jsp:attribute>
   <jsp:attribute name="body"><pre>more fancy body</pre></jsp:attribute>
</x:foo>

Dies wird produziert diese Markup:

<h1><b>a fancy</b> hello</h1>
<p>body: <em><pre>more fancy body</pre></em></p>
</body>

Der Hauptvorteil ist in der Lage sein, zwei Fragmente zu haben, statt nur einer mit einem Tag.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top