代码之家  ›  专栏  ›  技术社区  ›  Mickel

带有正文的自定义JSTL标记

  •  4
  • Mickel  · 技术社区  · 15 年前

    我们将在JSP/Spring项目中使用JSTL和定制的JSTL标记作为某种模板引擎。

    是否可以创建类似于以下内容的标记:

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

    像这样使用:

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

    例如,在自定义JSTL标记内使用body内容…

    这工作:

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

    但在我们的案例中并不是很有用。

    1 回复  |  直到 11 年前
        1
  •  5
  •   anweibel Chii    11 年前

    类似于McDowell的答案,但更灵活的是声明一个片段属性。 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags5.html#wp89854

    例如。, //foo.tag标记文件

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

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

    这将生成此标记:

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

    主要的优点是能够有两个片段,而不是只有一个带有标签的片段。

    推荐文章