给出一个简单的模板JSP,用于Sitemesh 3的渲染:
<%@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.
有什么建议吗?
答案 0 :(得分:11)
不确定您是否仍在使用Sitemesh 3,但我正在检查它,并且在浏览源代码后发现您已配置构建器。
我正在使用Java based configuration并创建了我自己的子类,它添加了一个支持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"/>