CMS内的grails应用程序

时间:2012-04-01 16:24:14

标签: grails content-management-system

我正在尝试在grails应用程序中构建一个非常简单的CMS功能。 基本上我在这里尝试的是在字符串中有一个gsp,我想从这个字符串构建gsp。

它可以工作,但生成的页面没有用主布局修饰。 此外,在其他一些尝试中,我注意到传递给make方法的模型被忽略。

我正在使用grails 2.0.1。

由于

class HomeController {

    def groovyPagesTemplateEngine

    def cms() {
        def page = """<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main"/>
<title>CMS page using your application's main layout</title>
</head>
<body>
CMS page using your application's "main" layout.
</body>
</html>"""

        StringWriter sw = new StringWriter()
        PrintWriter pw = new PrintWriter(sw)

        groovyPagesTemplateEngine.createTemplate(page, "somepage.gsp").make([nome: "ciao"]).writeTo(pw)
        render sw
    }

1 个答案:

答案 0 :(得分:1)

这不起作用,因为你基本上只是用字符串调用render。

调用sitemesh过滤器时会应用布局。为了使其工作,您必须将sitemesh装饰器应用于您的字符串。

当我们构建类似的功能时,我们所做的就是发送相关的页面片段:

Mytemplate.gsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="${layout}"/>
${head}
</head>
<body>
${body}
</body>
</html>

然后你可以打电话:

render( template: 'MyTemplate', model:[ layout: 'layout', head: '...', body: '...' ] )

这与您尝试做的事情具有相同的效果,但添加了sitemesh(并且可能正确集成了插件)。