【问题标题】:Grails 2.2.0 renders wrong pageGrails 2.2.0 呈现错误页面
【发布时间】:2013-10-15 10:48:30
【问题描述】:

我有一个 grails 2.2.0 应用程序。我创建了一个全局过滤器,并进行了一些检查。如果检查失败,则使用渲染视图呈现静态视图文件: viewFileName 结束流程,否则返回 true 表示应用程序可以继续。 在登录操作中,该操作会渲染一个调用 render view: loginFileName 的登录视图,但它会改为显示 viewFileName。请注意,过滤器通过现在已经通过,并且它的检查也通过了。 这个问题似乎与之前的帖子相似 Grails "respond" renders the wrong view when launched from .war file 但不同之处在于,有两个同名但在不同控制器中的索引视图文件,但这里我们有过滤器渲染视图,如果某些条件通过,即使该条件失败也会显示。 为了确保这是一个问题,我删除了该渲染视图:viewFileName in filter with render "...." 然后它运行良好,即操作显示正确的页面而不是静态页面. 如果需要,我可以发布更多详细信息。我不能依赖字符串中的那个页面来呈现,因为这不会是长期的。 这是有问题的两个类

 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
                }
            }
        }
    }

【问题讨论】:

  • 发布呈现视图的行。可能是您没有正确引用视图。
  • 渲染视图:“登录”,模型:参数
  • 登录在哪里?根?
  • 登录页面位于主文件夹,即主控制器。另外,我添加了一个精简的代码供参考
  • 尝试redirect 进行您需要的操作。 redirect(controller:... action: 'login')

标签: grails web filter


【解决方案1】:

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

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

【讨论】:

  • 谢谢。但是,如问题描述中所述,我确实在条件结束时返回错误语句以结束。只是忘了把它放在示例代码中:P
猜你喜欢
  • 2014-04-18
  • 2011-08-21
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多