【发布时间】:2012-02-28 18:01:59
【问题描述】:
我的问题与以下帖子类似 Render a view of another controller
我有一个 TestConfigController 我的问题是如果验证失败并且我想渲染 controller:test 和 view:edit 而不是 controller:testCONfig 和 view:edit 该怎么办
def save() {
def testConfigInstance = new TestConfig(params)
if (!testConfigInstance.save(flush: true)) {
/*而不是查看:“edit”我想要查看:“/test/edit”这不起作用*/
render(view:"edit", model: [testConfigInstance: testConfigInstance],id:params.test.id)
return
}
println "+++++++++++++++++++++++++"
flash.message = message(code: 'Data successfully saved', args: [message(code: 'testConfig.label', default: 'Successfully saved')])
redirect(action: "edit", controller:"test", id:params.test.id)
}
任何指针?我已经查看了没有“模型”参数的grails redirect,因此无法将验证错误传递给视图 我还查看了没有控制器参数的grails render,以便我可以回到不同的控制器! 如果需要更多详细信息/代码,请告诉我
编辑 使用两件事之一时会发生以下情况
render(view:"/test/edit", model: [testConfigInstance: testConfigInstance],id:params['test.id'])
上面的代码呈现页面 /test/edit 没有参考 testid 最终错误地说“test.id”不能为空..(意味着它的呈现 /test/edit 而不是 /test/edit/1)
render(view:"/test/edit/"+params['test.id'], model: [testConfigInstance: testConfigInstance],id:params['test.id'])
上面的代码导致以下错误
The requested resource (/EasyTha/WEB-INF/grails-app/views/test/edit/1.jsp) is not available.
上述任一代码最后只呈现“/test/edit”无 id,因此最终会报错说 test.id 不能为空。
【问题讨论】:
-
带有视图“/test/edit”的渲染闭包应该可以工作。您使用的是哪个版本的 grails?
-
您能否提供有关“不起作用”的更多信息?你收到一些错误信息吗?它应该可以工作。
-
@AnujArora Grails 2.0。它现在正在工作,但现在想到它我有一种感觉,由于开发环境,它可能无法正常工作?也许我应该尝试 /context/test/edit
-
@Grrrrrr 您不需要在视图名称前添加上下文。 Grails 应该可以处理这个问题。
-
@AnujArora 久违了,请看我的编辑
标签: grails redirect controller render gsp