layout.gsp
どのページにも表示される可能性がある (または表示されない可能性がある) コントロール (バナーなど) のマークアップを定義する場所があります。
<g:set var="showBanner" value="${...}" scope="page|request|flash|session"/>
<!-- Some more logic that may g:set showBanner var -->
<g:layoutBody/>
<g:if test="${[flash|request|???].showBanner}">
<div id="banner">...</div>
</g:if>
アイデアは、 によってレンダリングされたページに<g:layoutBody>
、バナーを表示するかどうかを決定させることです。したがって、次のように、1 つのページで常にバナーを表示することを決定できます。page1.gsp:
<g:set var="showBanner" value="${true}" scope="page|request|flash|session"/>
別のページでは、次のようにバナーを表示しないことにしました -page2.gsp:
<g:set var="showBanner" value="${false}" scope="page|request|flash|session"/>
残念ながら、このアプローチは私にはうまくいきません。属性のさまざまな組み合わせをすべて試しscope
ましたが、子ページでオーバーライドすることはできません。
これは一般的に間違ったアプローチですか、それとも細部が欠けていますか?