0

私は自分のプロジェクトで Sitemesh 3 を使用してきましたが、これまでのところうまく機能しています。最近、立ち往生している状況に遭遇しました。

私の最終的なビューは、2 つの html ファイルで構成する必要があり、両方に独自の と タグがあります。ファイル1:

<html>
    <head>Head1</head>
    <body>body1</body>
</html>

ファイル 2:

<html>
    <head>Head2</head>
    <body>body2</body>
</html>

freemarker include タグを使用してビューを作成しています。したがって、構成された HTML は次のようになります。

<html>
    <head>Head1</head>
    <body>body1</body>
</html>
<html>
    <head>Head2</head>
    <body>body2</body>
</html>

以下は私のデコレータです:

<html>
<head>
    <sitemesh:write property='head'/>
</head>
<body>
    <div class="container">
        <sitemesh:write property='body'/>
    </div>
</body>
</html>

しかし、一度装飾すると、私が得ている最終的な出力は次のとおりです。

<html>
<head>
    <head>Head1</head>
</head>
<body>
    <div class="container">
        <body>body1</body>
    </div>
</body>
</html>

しかし、期待される出力は

<html>
<head>
    <head>
        Head1
        Head2
    </head>
</head>
<body>
    <div class="container">
            body1
            body2
    </div>
</body>
</html>

同様の質問に出くわしましたが、複数のデコレータを作成したくないため、その解決策はうまくいきません。

Sitemesh 3 で可能かどうか知りたいだけです。可能であれば、その方法を教えてください。

ありがとう。

4

1 に答える 1

2

Sitemesh 3 の拡張を気にしない場合は、デコレータ テンプレートにサーバー サイド インクルードのサポートを追加することで、かなり簡単に行うことができます。私は別のライブラリ(UtterlyIdle)でこれを正確に行います。

StringTemplate をデコレータ言語として使用していますが、これは Freemarker またはその他のテンプレート ツールで動作するはずです。PageMapを追加してから、decorator テンプレートの呼び出しに追加します

$include("someUrl").body$

これにより、インクルードが実行され、Sitemesh 3 エンジンで出力が解析されます。これにより、好きなだけインクルードを持つことができます。

それが理にかなっていることを願っています

于 2012-11-09T07:20:07.020 に答える