Grails控制器没有将错误传递给gsp页面

时间:2012-05-24 18:03:55

标签: grails groovy

不确定我在这里做错了什么。我希望它是微妙的东西。我似乎无法将错误传递给我的gsp页面。我的控制器中有以下代码:

def submit = {
    if (params) { // if there are parameters
        def sampleInstance = new Sample(params)// new sample
        if (sample.validate()) { // try to validate
            sample.save()
            flash.message = "Successfully Entered Sample"
            redirect ( action: 'sample' )
        }else{
            flash.message = "Error Entering Sample"
            sampleInstance.errors.each {
                println it
            }
            redirect ( action: 'sample', model:[sampleInstance:sampleInstance])
        }
    } 
}

我已经证实params不是null。失败的验证创建hasErrors(),它也已经过验证,代码sample.errors.each {println it}通知我正确的字段错误,正如我所期望的那样。但是我的重定向语法可能有问题吗?因为flash.message会起作用,但我无法访问model:[sampleInstance:sampleInstance]地图,也不会呈现任何错误。

以下是我的gsp中的代码:

     <g:hasErrors>
        <div class="errors">
         <g:renderErrors bean="${sampleInstance}" as="list" />
        </div>

     </g:hasErrors>

我的控制器名为SubmitSampleController,操作名为submit,gsp页面名为sample.gsp。

这可能是我的问题的答案:我有另一个叫做sample的动作,也许我需要在示例动作中执行所有逻辑,而不是在提交动作中?或者有没有办法将模型从一个动作传递到同一控制器内的另一个动作?我有一种感觉,我的原始模型迷失了。

def sample(){
    def now = new Date()// today's date
    def today = com.Sample.findAllBySampleReceivedDateGreaterThanEquals(now.clearTime())// finds all samples submitted today
   [checkDate:today, date: now] // passes a map of checkDate and todays date to the sample.gsp page
}

1 个答案:

答案 0 :(得分:1)

在重定向中,模型用作查询参数,与render不同,后者执行实际转发并将对象放入请求范围。如果有错误,您需要做的是渲染一个视图并传递模型。然后你将得到所需的输出。