Grails2.2.0呈现错误页面

Grails2.2.0呈现错误页面,grails,web,filter,Grails,Web,Filter,我有一个Grails2.2.0应用程序。我已经创建了一个全局过滤器,并进行了一些检查。如果检查失败,则使用render view:viewFileName渲染静态视图文件,结束流,否则返回true,表示应用程序可以继续。 在登录操作时,该操作会呈现一个名为render view:loginFileName的登录视图,但它会显示viewFileName。请注意,筛选过程现在已经通过,签入过程也已经通过。 这个问题似乎与之前的文章相似 但不同的是,有两个同名的索引视图文件,但在不同的控制器中,但这里

我有一个Grails2.2.0应用程序。我已经创建了一个全局过滤器,并进行了一些检查。如果检查失败,则使用render view:viewFileName渲染静态视图文件,结束流,否则返回true,表示应用程序可以继续。 在登录操作时,该操作会呈现一个名为render view:loginFileName的登录视图,但它会显示viewFileName。请注意,筛选过程现在已经通过,签入过程也已经通过。 这个问题似乎与之前的文章相似 但不同的是,有两个同名的索引视图文件,但在不同的控制器中,但这里我们有一个过滤器,如果某个条件通过,它将显示视图,即使该条件失败。 为了确保这是一个问题,我删除了带有render“
”的过滤器中的render view:viewFileName,然后它运行良好,即操作显示在正确的页面,而不是静态页面。 如果需要,我可以发布更多细节。我不能依赖于该网页是字符串呈现,因为这将不会是长期的。 下面是有问题的两个类

 class MainController {

    def login() {
        def param = getHeaderParameters()
        render view: "login", model: param
    }
}

class MainFilters {
    private final String mainControllerName = "main"
    private final String startPage = "start"
    def GrailsConventionGroovyPageLocator groovyPageLocator

    def filters = {
        all(controller: '*', action: '*') {
            before = {
                if (AdminUtils.isStart(request)) {
                    println "rending start page...."
                    final fileView = "/$mainControllerName/$startPage"
                    render view: fileView
                }
            }
        }
    }

当呈现页面而不重定向页面时,如果不返回false,则在before检查后将调用您的操作。对于您的场景,您不希望调用您的操作,因此需要在调用之后返回false

def filters = {
        all(controller: '*', action: '*') {
            before = {
                if (AdminUtils.isStart(request)) {
                    println "rending start page...."
                    final fileView = "/$mainControllerName/$startPage"
                    render view: fileView
                    return false 
                }
            }
        }
    }

张贴渲染视图的线。可能是您没有正确引用视图。渲染视图:“登录”,模型:参数登录位于何处?root?登录页面位于主文件夹(即主控制器)中。此外,我还添加了一个精简的代码,用于将referencetry
重定向到您需要的操作<代码>重定向(控制器:…操作:“登录”)
谢谢。但是,我确实在问题描述中提到的条件结束时返回了错误的陈述。只是忘了把它放在示例代码中:P