Grails渲染空白页

时间:2015-11-10 11:25:09

标签: grails

我正在使用Grails 2.3.11。

当我要去localhost:8080/myapp/questionnaire/show/3时,应用程序会显示一个空白页面。调试甚至不会进入下面的任何方法。

class QuestionnaireController {

def beforeInterceptor = [action: this.&loadQuestionnaire, only: ['show']]

Questionnaire questionnaireInstance

def show = {
    render(view: 'show', model: [questionnaire: questionnaireInstance])
}

private def loadQuestionnaire() {
    questionnaireInstance = Questionnaire.findById(params.id)

    if(!questionnaireInstance) {
        redirectWhenNotFound(params.id)
    }
}

private def redirectWhenNotFound(def id) {
    flash.message = message(code: 'default.not.found.message', args: [
            message(code: 'questionnaire.label'),
            id
    ])
    redirect(uri: "/")
}

但是,当我尝试localhost:8080/myapp/questionnaire/show时,它会转到loadQuestionnaire(),显然无法找到域实例,因为params.id不存在,所以转到redirectWhenNotFound()并将其正确地重定向到主页面。

问题是 - 为什么它不能正常工作?

修改

仅当存在具有给定id的实例时才显示空白页面,如果没有,则进入该方法。

最终我找到了解决方案,在下面的答案中。

1 个答案:

答案 0 :(得分:0)

在检查了更多的东西之后,只有在存在具有给定id的实例时才会失败,并且当没有具有给定id的实例时它会通过该方法,结果出现拼写错误在questionnaire表中的列,在编辑之后,Grails更新了架构而没有删除旧架构。

可能这是问题所在,因为我删除了该列,删除了所有行,重新启动了应用程序,创建了一个新实例,现在可以正常运行。

问题是它失败了,所以我将这个答案留给任何可能在将来遇到同样问题的人。