是否可以使用SiteMesh提取SCRIPT标签?

时间:2009-12-16 12:29:41

标签: java api decorator sitemesh

我有自定义JSP标记,可以生成一些HTML内容,以及一些由此HTML代码调用的javascript函数。在当前实现中,SCRIPT标记在HTML代码的正上方创建。

为了避免修改现有代码库,我想使用SiteMesh或其他一些装饰工具在页面的HEAD部分中提取这些脚本。

我知道SiteMesh可以从<content tag="...">元素中提取内容,但我想知道是否也可以使用其他标记,例如SCRIPT。

这可以通过SiteMesh实现,还是知道可以允许我这样做的任何工具?

谢谢!

1 个答案:

答案 0 :(得分:1)

SiteMesh的HTMLPageParser是可扩展的,因此您可以通过扩展HTMLPageParser和configuring SiteMesh to use your class instead of HTMLPageParser来添加自己的自定义规则来提取<script>元素,如下所示:

import com.opensymphony.module.sitemesh.parser.HTMLPageParser;

public CustomPageParser extends HTMLPageParser {

    protected void addUserDefinedRules(State html, PageBuilder page) {
        super.addUserDefinedRules(html, page);

        html.addRule(new ScriptExtractingRule(page));
    }

}

我想你的ScriptExtractingRule将在标准的SiteMesh ContentBlockExtractingRule之后建模,将内容存储在页面上下文中,这样你的装饰者就可以访问这些块,好像它们是<content>块一样。