2010-09-15 3 views
1

Je voudrais savoir comment extraire le contenu d'une DIV spécifique en utilisant des décorateurs, au lieu d'utiliser <decorator:body /> qui récupérera tout le contenu de la balise <body>.Extraction du contenu d'une DIV à l'aide des décorateurs Sitemesh

+0

Pas réellement une solution de sitemesh, mais si vous voulez que cela fonctionne vraiment vite, vous pouvez le faire avec jQuery avec quelque chose comme ça '$ (document) .ready (function() {$ ("# inner-div"). prependTo ("# content-wrapper");}); ' –

Répondre

0

NB Black Sensei a posté une meilleure réponse ci-dessous.

Je ne pense pas que ce soit possible. Sitemesh est un système de template très basique qui a très peu de tags - cinq en tout. Il y a une liste complète ici decorator taglib

Vous pourriez vouloir regarder un autre système de modèle si vous avez besoin de ce niveau de contrôle.

0

SiteMesh est livré avec com.opensymphony.module.sitemesh.multipass.DivExtractingPageParser. C'est limité dans la fonctionnalité; il extrait seulement les divs un niveau en dessous du corps.

+0

C'est une bonne chose ... sinon sitemesh va jouer avec n'importe quel div qui a un identifiant. Envelopper un div dans un autre sans identifiant le protégera. –

3

Il est possible avec la version 2.4.2 de SiteMesh que je suis using.Found le anwser sur christian grobmeier alors voici ma sitemesh.xml

<sitemesh> 
    <property name="decorators-file" value="/WEB-INF/decorators.xml"/> 
    <excludes file="${decorators-file}"/> 

    <page-parsers> 
    <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/> 
    </page-parsers> 

    <page-parsers> 
    <parser content-type="text/html" class="com.opensymphony.module.sitemesh.multipass.DivExtractingPageParser"/> 
    </page-parsers> 

    <decorator-mappers> 
    <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> 
     <param name="config" value="${decorators-file}"/> 
    </mapper> 
    </decorator-mappers> 
</sitemesh> 

est ici un extrait de mon mainlayout.jsp

<div id="container" style=" padding-top: 60px; "> 
      <div id="leftbar"> 

       <div style="height:400px;"> 
        <img src="<spring:url value='/images/Logo.png'/>" class="logo"/> 
       </div> 

       <decorator:getProperty property="div.side-menu"/> 
       <%--<decorator:body />--%> 
      </div> 
      <div> 
       <decorator:getProperty property="div.top" /> 
      </div> 
      <div> 
       <decorator:getProperty property="div.content" /> 
      </div> 
     </div> 

extrait de home.ftl (en utilisant freemarker)

<div id="side-menu"> 
    <ul> 
    <li class="current"><a href="/home">All</a></li> 
     <#list genre as gen > 
     <li><a href="/category?cat=${gen}">${gen}</a></li> 
    </#list> 
</ul> 
</div> 


<div id="top"> 
    <ul id="slider" class="architectorSlider"> 
    <li> 
     <img src="<@spring.url '/images/slide_1.jpg'/>" alt="" class="slide-image"/> 
     <img src="<@spring.url '/images/slider/timthumbf014.jpg'/>?src=<@spring.url '/images/slide_1.jpg' />&amp;w=100&amp;h=42&amp;zc=1" 
      alt="" class="slide-thumbnail"/> 
    </li> 
    </ul> 
</div> 

J'espère que cela peut vous aider à partir si ce n'est pas trop tard: D

+0

Ce n'est pas correct. Vous devez remplacer 'HtmlPageParser' par' DivExtractingPageParser'. Sinon, des choses étranges peuvent arriver. Notez également que votre XML est mal formé, il ne devrait pas y avoir deux sections ''. –

Questions connexes