Можно ли извлечь теги SCRIPT с помощью SiteMesh? - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть пользовательские теги JSP, которые генерируют некоторый контент HTML, наряду с некоторыми функциями javascript, которые вызываются этим HTML-кодом. В текущей реализации теги SCRIPT создаются чуть выше HTML-кода.

Чтобы не изменять существующую кодовую базу, я хочу вытащить эти скрипты внутри раздела HEAD страницы, используя SiteMesh или какой-либо другой инструмент декоратора.

Я знаю, что SiteMesh может извлекать контент из <content tag="..."> элементов, но мне было интересно, возможно ли это и с другими тегами, такими как SCRIPT.

Возможно ли это с помощью SiteMesh, или вам известны какие-либо инструменты, которые могут мне это позволить?

Спасибо!

1 Ответ

1 голос
/ 21 декабря 2009

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> блоками.

...