sitemesh默认提供了一些常用的rule

可以看到其实可以选择
/** * Extracts the contents of any elements that look like *and write the contents * to a page property (page.foo). * *... This is a cheap and cheerful mechanism for embedding multiple components in a * page that can be used in different places in decorators.
* * @author Joe Walnes */ public class ContentBlockExtractingRule extends BasicBlockRule{ private final ContentProperty propertyToExport; public ContentBlockExtractingRule(ContentProperty propertyToExport) { this.propertyToExport = propertyToExport; } @Override protected String processStart(Tag tag) throws IOException { tagProcessorContext.pushBuffer(); return tag.getAttributeValue("tag", false); } @Override protected void processEnd(Tag tag, String tagId) throws IOException { propertyToExport.getChild(tagId).setValue(tagProcessorContext.currentBufferContents()); tagProcessorContext.popBuffer(); } }
修改ScriptTagRuleBundle处理如下
public class ScriptTagRuleBundle implements TagRuleBundle {
@Override
public void install(State defaultState, ContentProperty contentProperty, SiteMeshContext siteMeshContext) {
defaultState.addRule("content", new ContentBlockExtractingRule(contentProperty.getChild("page")));
}
@Override
public void cleanUp(State defaultState, ContentProperty contentProperty, SiteMeshContext siteMeshContext) {
}
}用法很简单使用content作为tag默认填上tag即可
比如