2012-05-24 44 views
1

不确定我在这里做错了什么。我希望这是微妙的。我似乎无法将错误传递给我的gsp页面。我的控制器中有以下代码:Grails控制器不会将错误传递到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}正如我所期望的那样通知我正确的Field错误。但是,我的重定向语法可能有什么不对?因为flash.message可以工作,但我无法访问model:[sampleInstance:sampleInstance]地图,并且不会显示错误。

这里是我的GSP代码:

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

    </g:hasErrors> 

我的控制器被称为SubmitSampleController,动作被命名为提交,以及GSP页面被称为sample.gsp。

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

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

在重定向,该模型被用作查询参数这是不一样呈现相同的,它不实际的前进,并把对象的请求范围之内。如果出现错误,您需要执行的操作是渲染视图并传递模型。然后你会得到所需的输出。

+1

谢谢你的工作。为了简化事情,我最终将两个操作合并为一个,但知道我可以在同一个gsp页面上使用多个操作是非常好的。干杯! – Universitas

相关问题