我的 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 = ""
}
}
}
我该如何解决这个问题或进一步排除故障?