0

Grails GSPに次のものを置き換える方法はありますか?

<tmpl:/templates/header />
<!-- tmpl namespace call is equivalent to <g:render template="/templates/header" /> -->    

<!-- definition of inner content -->

<tmpl:/templates/footer />

外側のテンプレートを使用しますか?基本的に、ラッピング外部テンプレートをインポートする方法は、

<outertemplate:templatename>
<!-- header will be rendered from outer template -->

<!-- definition of inner content -->

<!-- footer will be rendered from outer template -->
</outertemplate:templatename>

外側のテンプレートの定義は、

<!-- definition of header content -->

<!-- placeholder or attr for inner content -->

<!-- definition of footer content -->

ラッピングコンテンツを2つではなく1つのテンプレートにカプセル化します。IIRCはJSFでこれを行う方法がありましたが、GSPで同等のものを見つけることができません。

4

2 に答える 2

1

タグライブラリを使用して、このようなものを作成できます。

class SimpleTagLib {
    def emoticon = { attrs, body ->
       out << body() << (attrs.happy == 'true' ? " :-)" : " :-(")
    }
}

emoticonこれは、次のようにgspで使用できるタグを定義します。

<g:emoticon happy="true">Hi John</g:emoticon>

body()タグ本体のコンテンツをレンダリングするために使用されます。

(この例は、公式のgrailsドキュメントからコピーされています)

于 2013-03-26T22:25:51.500 に答える
1

さて、私が探していたのはGrailsのSiteMeshレイアウトのサポートでした。これにより、テンプレートよりも雄弁な方法で、一般的に使用されるビューマークアップを定義できます。

したがって、ヘッダーとフッターのコンテンツをレイアウト内に配置できます

<html>
    <head>
        <title><g:layoutTitle/></title>
        <g:layoutHead />
    </head>
    <body>
        <!-- HEADER CONTENT DEFINED HERE (or for stuff in head in the head above -->
        <g:layoutBody />
        <!-- FOOTER CONTENT DEFINED HERE -->
    </body>
</html>

そして、レイアウトを使用して、

<html>
    <head>
        <title>An Example Page</title>
        <meta name="layout" content="main" />
    </head>
    <body>This is my content!</body>
</html>

これは、ヘッダーとフッターのテンプレートよりもはるかにクリーンだと思います。

レイアウトをネストすることもできます。

于 2013-04-10T16:15:26.140 に答える