【问题标题】:Custom JSTL tags with body带有正文的自定义 JSTL 标记
【发布时间】:2009-10-20 09:46:04
【问题描述】:

我们将在我们的 JSP/spring-project 中为某种模板引擎使用 JSTL 和自定义 JSTL-tags。

有没有办法创建一个看起来像这样的标签:

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

这行得通:

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

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

【问题讨论】:

    标签: jsp spring-mvc jstl jsp-tags jspx


    【解决方案1】:

    类似于 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>
    

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

    【讨论】:

    • 缺点是比较冗长。
    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 2015-05-14
    • 2011-10-15
    • 2016-09-21
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多