【问题标题】:Multiple body tags in Sitemesh 3Sitemesh 3 中的多个正文标签
【发布时间】:2012-10-26 09:18:51
【问题描述】:

我一直在我的项目中使用 Sitemesh 3,到目前为止它运行良好。最近遇到了一个卡住的情况。

我的最终视图必须由 2 个 html 文件组成,它们都有自己的和标签。 文件1:

<html>
    <head>Head1</head>
    <body>body1</body>
</html>

文件2:

<html>
    <head>Head2</head>
    <body>body2</body>
</html>

我正在使用 freemarker 包含标签组成视图。因此,组合后的 HTML 如下所示:

<html>
    <head>Head1</head>
    <body>body1</body>
</html>
<html>
    <head>Head2</head>
    <body>body2</body>
</html>

以下是我的装饰器:

<html>
<head>
    <sitemesh:write property='head'/>
</head>
<body>
    <div class="container">
        <sitemesh:write property='body'/>
    </div>
</body>
</html>

但是一旦装饰,我得到的最终输出是:

<html>
<head>
    <head>Head1</head>
</head>
<body>
    <div class="container">
        <body>body1</body>
    </div>
</body>
</html>

但预期的输出是

<html>
<head>
    <head>
        Head1
        Head2
    </head>
</head>
<body>
    <div class="container">
            body1
            body2
    </div>
</body>
</html>

我遇到了similar question,但该解决方案对我不起作用,因为我不想创建多个装饰器。

我只是想知道在 Sitemesh 3 中是否可以。如果可以,那么如何。

谢谢。

【问题讨论】:

    标签: java freemarker sitemesh


    【解决方案1】:

    如果您不介意扩展 Sitemesh 3,那么通过在您的装饰器模板中添加对服务器端包含的支持很容易做到这一点。我在另一个库 (UtterlyIdle) 中正是这样做的。

    我使用 StringTemplate 作为我的装饰语言,但这应该可以在 Freemarker 或任何其他模板工具中使用。我添加了一个PageMap,然后在我的装饰器模板调用中

    $include("someUrl").body$
    

    这会包含,然后使用 Sitemesh 3 引擎解析输出。这使您可以拥有任意数量的包含。

    希望这是有道理的

    【讨论】:

    • 虽然这不完全是答案,但它是一个替代方案。所以,接受它作为答案。 :) 谢谢。
    猜你喜欢
    • 2012-07-30
    • 2011-05-21
    • 2016-12-10
    • 1970-01-01
    • 2016-05-11
    • 2013-06-20
    • 2014-11-06
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多