Grails布局未应用于404 UrlMapping

时间:2010-06-27 23:20:14

标签: grails

在Grails 1.3.1应用程序中,我希望404错误导致渲染“list”控制器的主索引操作。此控制器使用布局目录(views / layouts / list.gsp)中的常规布局文件,然后使用包含的片段进行该操作(views / list / index.gsp)。

当正常访问此操作(http://localhost/list/index)时,将应用布局文件和代码段,并且它看起来是正确的。但是,当通过UrlMapping类中的404规则访问 - “404”(控制器:“list”,action:“index”)时 - 不使用布局文件,只显示片段。

有没有人知道为什么会发生这种情况,以及是否有办法让传统布局显示为404(或其他)错误映射?

3 个答案:

答案 0 :(得分:5)

我知道前一段时间这是Grails使用的SiteMesh版本中的一个错误。您可以将错误页面包装在其中:

<g:applyLayout name="main">  
</g:applyLayout>

而不是使用通常的:

<meta name="layout" content="main" />

答案 1 :(得分:2)

要寻找的另一件事是sitemesh.xml配置文件。 Sitemesh根据响应的内容类型打开/关闭,此文件声明site-mesh将处理的内容类型值。就我而言,text/html;charset=UTF-8的条目不足以处理类型为text/html的回复。

答案 2 :(得分:1)

您确定未应用布局吗?我正在使用Grails 1.3.2而我布局没有应用,但实际上在404之后布局中缺少模型和安全标签。

如果您的布局内容源自可用的内容,请首先尝试“Hello world”以查看它是否显示。