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

标签 java api decorator sitemesh

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

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

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

SiteMesh 可以做到这一点吗?或者知道有什么工具可以让我做到这一点吗?

谢谢!

最佳答案

SiteMesh 的 HTMLPageParser是可扩展的,因此您可以添加自己的自定义规则来提取 <script>通过扩展 HTMLPageParser 和 configuring SiteMesh to use your class instead of 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 进行建模,将内容存储在页面上下文中,以便您的装饰器可以访问这些 block ,就像它们是 <content> 一样。 block 。

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

上一篇:java - 迭代查询

下一篇:java通用通配符

相关文章:

java - 在 Angular 项目中显示 pom.xml 版本

java - 处理运行时依赖性

java - 将数组保存到文件中 (Java)

iphone - Foursquare API closeByVenue 服务问题

json - 无法查询 OpenLibrary

Python:使用装饰器修改函数的内部行为

java - 将大型文本文件上传到 DB2 CLOB 字段

django - 是否有DJango的通用 cargo 计算器?

python - 我的装饰器适用于常规功能,但不适用于实例

python - python中的函数装饰器安全