2009-12-16 2 views
0

J'ai des balises JSP personnalisées qui génèrent du contenu HTML, ainsi que des fonctions javascript qui sont appelées par ce code HTML. Dans l'implémentation actuelle, les balises SCRIPT sont créées juste au-dessus du code HTML.Est-il possible d'extraire des tags SCRIPT avec SiteMesh?

Pour éviter de modifier la base de code existante, je veux récupérer ces scripts dans la section HEAD de la page en utilisant SiteMesh ou un autre outil de décoration.

Je sais que SiteMesh peut extraire le contenu des éléments <content tag="...">, mais je me demandais si c'était possible aussi avec d'autres balises, comme SCRIPT. Est-ce possible avec SiteMesh, ou connaissez-vous des outils qui pourraient me permettre de le faire?

Merci!

Répondre

1

HTMLPageParser de SiteMesh est extensible, de sorte que vous pouvez ajouter votre propre règle personnalisée pour extraire <script> éléments en étendant HTMLPageParser et configuring SiteMesh to use your class instead of HTMLPageParser, quelque chose comme ceci:

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)); 
    } 

} 

J'imagine votre ScriptExtractingRule serait calquée sur la norme SiteMesh ContentBlockExtractingRule , en stockant le contenu dans le contexte de la page afin que votre décorateur puisse accéder aux blocs comme s'il s'agissait de blocs <content>.

Questions connexes