2012-04-07 16 views
3

Ich möchte mehrere Dekorateure, wie hier dokumentiert: https://github.com/sitemesh/sitemesh2. Ich biete mehrere Decorators in decorators.xml, aber der Hauptdekorator wird auf jede Datei in meinem Projekt angewendet. Zum Beispiel meine Dekorateure sieht wie folgt aus:SiteMesh mit mehreren Decorator-Dateien

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/*</pattern> 
    </decorator> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
</decorators> 

Und beide /spring/some/page.jspx und /spring/other/page.jspx beide machen mit dem `main.jspx‘ Vorlage.

Was mache ich falsch?

Antwort

0

Verwenden Sie die folgenden Schritte aus:

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/spring/main/*</pattern> 
    </decorator> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
</decorators> 

und mir sagen, ob es funktioniert.

+1

das hat nicht funktioniert. tatsächlich habe ich eine Menge Dinge ausprobiert und das einzige was funktioniert (für jede Vorlage) ist '/ *' oder '/ context *'. So wird zum Beispiel jedes Muster wie '/ context/x/*' nicht angewendet. – Kevin

4

weiß, dass ich die Dokumentation Beispiel diese Idee widerspricht, aber wenn Sie etwas brauchen, um zu versuchen - versuchen Nachbestellung Ihre Dekorateure wie so:

<decorators defaultdir="/WEB-INF/decorators"> 
    <decorator name="other" page="other.jspx"> 
     <pattern>/spring/other/*</pattern> 
    </decorator> 
    <decorator name="main" page="main.jspx"> 
     <pattern>/*</pattern> 
    </decorator> 
</decorators> 

Aus dem Gedächtnis Ich dachte Sitemesh den ersten passenden Dekorateur verwendet Muster, und mit der Reihenfolge, die Sie angegeben haben, wäre das immer der "Hauptdekorateur".