Grails3中的动态布局选择

Grails3中的动态布局选择,grails,sitemesh,Grails,Sitemesh,对于相同的页面,可以使用不同的布局。例如,移动和PC用户 但是如何使用grails实现这一点呢? 关于这个案子,我什么也没写 我尝试了tag in view.gsp,但不起作用 <meta name="layout" content="${defineLayout()}"/> 有什么想法吗?通过grails代码探索,我找到了GroovyPageLayoutFinder类 它有一条直线 final Object layoutAttribut

对于相同的页面,可以使用不同的布局。例如,移动和PC用户

但是如何使用grails实现这一点呢? 关于这个案子,我什么也没写 我尝试了tag in view.gsp,但不起作用

<meta name="layout" content="${defineLayout()}"/>


有什么想法吗?

通过grails代码探索,我找到了GroovyPageLayoutFinder类 它有一条直线

final Object layoutAttribute = request.getAttribute(LAYOUT_ATTRIBUTE);

我可以将org.grails.layout.name属性放到拦截器中的请求中。它就像一个符咒

您可以使用任何动态表达式来表示布局的名称。例如

<meta name="layout" content="${someVariable}"/>
<!doctype html>
<html lang="en" class="no-js">
<head>
    <title>
        <g:layoutTitle default="Grails"/>
    </title>
    <g:layoutHead/>
</head>

<body>

<H1>This Is A Plain Ole Layout</H1>
<g:layoutBody/>

</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <meta name="layout" content="${dynamicLayout ?: 'main'}">
    <title></title>
</head>

<body>

</body>
</html>
package demon101dynamiclayout

class DemoController {

    def index() {
    }

    def plain() {
        render view: 'index', model: [dynamicLayout: 'plain']
    }
}