不确定我在这里做错了什么。我希望这是微妙的。我似乎无法将错误传递给我的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
}
谢谢你的工作。为了简化事情,我最终将两个操作合并为一个,但知道我可以在同一个gsp页面上使用多个操作是非常好的。干杯! – Universitas