0

我的 grails 应用程序中有以下代码:

def list () {
  def roles = principal.authorities*.authority
  def page = roles.contains("ROLE_ADMIN")? "allcolors": "usercolors"
  if (params.sort == "latest" || params.sort == null) {
    logger.debug("came in if");
    render view: page, model: [colorlist: colorService.colorList()]
  } 
  else
    render view: page, model: [colorlist: colorService.colorListForUser()]
}

当我使用grails run-app上面的代码运行我的应用程序时工作正常。但是,当我部署由上述代码创建的 war 文件时,即使调试语句仍然被打印,grails test war target/myapp.war也会出现“找不到页面”的错误。came in if

我也尝试过在开发中运行这个应用程序,grails test run-app但即使这样,上述方法也不起作用。有趣的是,当我在prod模式 ( grails prod run-app) 下运行应用程序时,一切正常。所以肯定跟test环境有关

此外,为了确保没有任何数据差异,我将 dev test 和 prod 更改为指向同一个开发数据库。

难道我的应用程序有一些我看不到的测试环境的特殊设置......这会导致“渲染”不起作用?

我的环境如下所示:

    environments {
        development {
            grails.logging.jul.usebridge = true
        }
        test {
            grails.logging.jul.usebridge = true
        }
        production {
            grails.logging.jul.usebridge = false
        }
    }

And DB config looks like this:

environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
        }
        hibernate {
        }
    }
    test {
        dataSource {
            dbCreate = 
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
            properties {
            }
            hibernate {
            }
        }
    }
    production {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
        }
    }
}

我该如何解决这个问题或进一步排除故障?

4

1 回答 1

0

run-app 使用默认的“开发”数据源运行,不要与“测试”环境混淆。检查您的 Config.groovy(编辑:和 DataSource.groovy)并确保在您的环境中配置了 test { }。

更多信息可以在这里的 grails 文档中找到:http: //www.grails.org/Environments

于 2013-09-20T16:39:20.043 回答