0

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

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

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

SiteMesh 可以做到这一点,或者知道任何可以让我这样做的工具吗?

谢谢!

4

1 回答 1

1

SiteMesh 的HTMLPageParser是可扩展的,因此您可以添加自己的自定义规则以<script>通过扩展 HTMLPageParser 并配置 SiteMesh 以使用您的类而不是 HTMLPageParser来提取元素,如下所示:

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>块。

于 2009-12-21T02:53:58.360 回答