2012-04-07 15 views
3

複数のデコレータが必要です。詳しくは、https://github.com/sitemesh/sitemesh2を参照してください。私はdecorators.xmlに複数のデコレータを用意していますが、メインデコレータはプロジェクトのすべてのファイルに適用されます。 など。複数のデコレータファイルを含むsitemesh

<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> 

両方/spring/some/page.jspx/spring/other/page.jspx両方 `main.jspx」テンプレートを使用してレンダリング:私のデコレータはこのようになります。

私は間違っていますか?

答えて

0

は、次を使用します。

<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> 

、それが働いていた場合を教えてください。

+1

これは機能しませんでした。実際に私はたくさんのものを試してきましたが、どのテンプレートでも動作するのは '/ *'または '/ context *'だけです。例えば ​​'/ context/x/* 'のようなパターンは適用されません。 – Kevin

4

私はドキュメントの例では、この考え方に反する知っている、しかし、あなたがしようとするものが必要な場合 - そのようなあなたのデコレータ再注文してみてください:メモリから

<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> 

を私はSitemeshが最初マッチングデコレータを使用と思いましたパターン、そしてあなたが指定した順序は常に「メイン」デコレータになります。

関連する問題