Java Sitemesh 3中的多个主体标记

Java Sitemesh 3中的多个主体标记,java,freemarker,sitemesh,Java,Freemarker,Sitemesh,我一直在为我的项目使用Sitemesh 3,到目前为止,它工作得很好。最近我遇到了一种情况,我被卡住了 我的最终视图必须由2个html文件组成,它们都有自己的和标记。 文件1: 标题1 车身1 文件2: <html> <head>Head2</head> <body>body2</body> </html> 标题2 车身2 我正在使用freemarker include标记构建视图。因此,合成的HT

我一直在为我的项目使用Sitemesh 3,到目前为止,它工作得很好。最近我遇到了一种情况,我被卡住了

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


标题1
车身1
文件2:

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

标题2
车身2
我正在使用freemarker include标记构建视图。因此,合成的HTML如下所示:

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

标题1
车身1
标题2
车身2
以下是我的装饰师:

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

标题1
车身1
但预期的产出是有限的

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

标题1
标题2
车身1
车身2
我遇到了一个解决方案,但该解决方案对我不起作用,因为我不想创建多个装饰器

我只是想知道它在Sitemesh 3中是否可行。如果是的话,那怎么办


谢谢。

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

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

$include("someUrl").body$
这将执行include操作,然后使用Sitemesh 3引擎解析输出。这允许您拥有任意数量的include


希望这是有意义的

尽管这不是确切的答案,但它是一个替代方案。因此,接受它作为答案。:)谢谢
$include("someUrl").body$