我有自定义 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/