Можно ли извлечь теги SCRIPT с помощью SiteMesh?

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

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

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

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

Спасибо!


person Community    schedule 16.12.2009    source источник


Ответы (1)


HTMLPageParser в SiteMesh является расширяемым, поэтому вы можете добавить собственное правило для извлечения <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> блоками.

person ZoogieZork    schedule 21.12.2009