【问题标题】:Grails: showing error message in web flowGrails:在 Web 流中显示错误消息
【发布时间】:2012-03-23 12:46:42
【问题描述】:

我想在 .gsp 中显示我的域错误消息,但不知何故我无法... 在我的控制器中,

class SomethingController {
    def index(){
        redirect(action: "create")
    }

    def createFlow = {
        stepOne {
            on("submit"){
                domain = new Domain(firstColumn: params.firstColumn)

                if(!domain.validate()){
                    return error()
                } else {
                    return success()
                }
            }.to "stepTwo"  
        }
        stepTwo {
            ...
        }
    }
}

在我的 .gsp 中,我有:

<g:renderErrors bean="${domain}" />

我确定如果我“println domain.errors”我会收到验证错误消息。但是,当 stepOne 失败时,我看不到任何错误消息以及 ${domain.errors} 输出 0 个错误。

请帮助...这可能是我正在做的一个愚蠢的错误...

【问题讨论】:

    标签: grails spring-webflow


    【解决方案1】:

    您应该能够通过类似这样的流程(未测试)传递域对象或任何其他值:

    class SomethingController {
    def index(){
        redirect(action: "create")
    }
    
    def createFlow = {
        stepOne {
            on("submit"){
                domain = new Domain(firstColumn: params.firstColumn)
    
                if(!domain.validate()){
    
    
                    flow.domain= domain
                    // or 
                    flow.errorMessages="this is an error"
    
    
                    return error()
                } else {
                    return success()
                }
            }.to "stepTwo"  
        }
        stepTwo {
            ...
        }
    }
    

    }

    并将其显示在您的视图上,如下所示:

     <div>${errorMessages}</div>
     <g:renderErrors bean="${domain}" />
    

    【讨论】:

    • 这是正确的做法吗?你 renderErrors 无论如何都不会输出任何东西。我只是不想像你在这里所做的那样使用 $errorMessages,而是以 Grails 的方式(使用 renderErrors)。
    • 做一件事总是有不同的方法,如果它适合你,这种方法是没有错的。但是,如果您尝试使用 errorMessages 方式,您将不得不自己处理渲染。还将您的 renderErrors 放在 has errorrs 标记中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多