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

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

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

SiteMesh是否可能做到这一点,或者知道有什么工具可以帮助我做到这一点?

谢谢!

最佳答案

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>块一样访问这些块。

关于java - 是否可以使用SiteMesh提取SCRIPT标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1914381/

10-10 16:26