1

给定一个由 Sitemesh 3 渲染的简单模板 JSP:

<%@include file="../jsp_inc/taglibs.jsp" %>
<!DOCTYPE html>
<head>
    <link rel="stylesheet" type="text/css" href='<c:url value="/css/global.css" />' >
</head>
<body>
<h1>[HEADING]</h1>
<div>
    <sitemesh:write property='body'/>
</div>
</body>

该模板按预期工作,将 JSP 元素的内容插入到模板中。

正如您可能从上面所期望的那样,我希望能够将 JSP 中设置的值(例如 h1 元素)插入到我的模板中的适当元素中。

我试过了:

<sitemesh:getProperty property="page.heading"></sitemesh:getProperty>

在模板/装饰器中,并且:

<content tag="heading"></content>

在 JSP 中,根据关于 SO 的另一个问题,但我认为这可能是指 Sitemesh 2。我正在使用 Sitemesh 3。

有什么建议么?

4

1 回答 1

11

不确定您是否仍在使用 Sitemesh 3,但我正在检查它并在浏览源代码后发现您已经配置了构建器。

我正在使用基于 Java 的配置并创建了自己的子类,该子类添加了支持 Sitemesh 2 样式内容块的标记处理规则包:

public class MySiteMeshFilter extends ConfigurableSiteMeshFilter {
    @Override
    protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
        builder.addTagRuleBundle(new Sm2TagRuleBundle());
    }
}

通过 sitemesh3.xml 中的 XML 配置:

<sitemesh>
    <content-processor>
        <tag-rule-bundle class="org.sitemesh.content.tagrules.html.Sm2TagRuleBundle" />
    </content-processor>
    <!-- Your mappings go here -->
    <mapping ... />
</sitemesh>

这样做允许您使用内容标签,例如:

<content tag="heading"></content>

在装饰器/模板页面中使用不再存在的sitemesh:write标签:sitemesh:getProperty

<sitemesh:write property="page.heading"/>
于 2013-06-07T05:49:01.440 回答