java - Sitemesh 3 中的多个正文标签

标签 java freemarker sitemesh

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

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

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

文件2:

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

我正在使用 freemarker include 标签编写 View 。因此,组成的 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 中是否可行。如果可以,那么如何实现。

谢谢。

最佳答案

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

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

$include("someUrl").body$

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

希望这是有道理的

关于java - Sitemesh 3 中的多个正文标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250730/

相关文章:

java - Objectify 上下文未启动/缺少 ObjectifyFilter

java - 如何使用 Maven for App Engine 设置 Java Eclipse (Juno) 动态 Web 项目

jsp - sitemesh 与 jsp-config (<include-prelude>)

Java日历获取从今天开始的前10天并将时间设置为12 :00 fails

java - 在数组中查找特定的 char 元素

freemarker - freemarker表达式是否可以包含空格

macros - 在另一个宏的字符串参数中使用 Freemarker 宏调用

java - 如何使用 Freemarker 变量解析 String HTML

java - Sitemesh 有哪些替代方案可以帮助在 Spring MVC 应用程序中布局 JSP/JSTL 页面页脚/页眉?

regex - 区分大小写的网址