Grails-先前对重定向(..)的调用已经重定向
在Grails应用程序中,偶尔会在日志中看到“无法发出重定向”: 2011-04-27 12:18:40469[TP-Processor13]错误GrailExceptionResolver-无法在此处发出重定向(..)。先前对重定向(..)的调用已重定向响应。 org.codehaus.groovy.grails.web.servlet.mvc.exceptions.CannotRedirectException:无法在此处发出重定向(..)。先前对重定向(..)的调用已重定向响应。 在com.coach.LoginController$\u closure2.doCall上(LoginController.groovy:90) 我不知道怎么找到这个。有什么想法或建议吗Grails-先前对重定向(..)的调用已经重定向,grails,Grails,在Grails应用程序中,偶尔会在日志中看到“无法发出重定向”: 2011-04-27 12:18:40469[TP-Processor13]错误GrailExceptionResolver-无法在此处发出重定向(..)。先前对重定向(..)的调用已重定向响应。 org.codehaus.groovy.grails.web.servlet.mvc.exceptions.CannotRedirectException:无法在此处发出重定向(..)。先前对重定向(..)的调用已重定向响应。 在com
Todd检查登录控制器;在重定向之后,您似乎没有从操作返回。例如:
您只能重定向一次。如果您从控制器方法A->B->C移动,那么B实际上应该是一个服务方法,然后将其结果传递给控制器方法C,而不是控制器方法
class TemplateController {
def templateService
def A() {
def results = templateService.B(params.input)
redirect action: 'C', params: ['results': results]
}
def C() {
return params.results
}
}
虽然这个问题已经得到了回答,但我想我会为未来的拖网渔船分享我的经验。希望能有帮助 这发生在我身上,因为我没有在重定向后执行
返回操作
:
if (test) {
flash.message = "Error message."
redirect(action: "list")
}
switch ( params.test ) {
case "value":
redirect(action: "value", id: callInstance.id, version: callInstance.version)
重定向后,如果没有返回,Grails将继续运行。在我的例子中,它点击了开关
,然后转到第二个重定向,这就是产生错误的地方。代码应如下所示:
if (test) {
flash.message = "Error message."
redirect(action: "list")
return
}
switch ( params.test ) {
case "value":
redirect(action: "value", id: callInstance.id, version: callInstance.version)
return
这段代码当然已经匿名;)
编辑
哦,天哪。我刚刚意识到这是的答案:/好吧,我把它作为一个额外的例子。这里是什么:LoginController。groovy:90??
if (test) {
flash.message = "Error message."
redirect(action: "list")
return
}
switch ( params.test ) {
case "value":
redirect(action: "value", id: callInstance.id, version: callInstance.version)
return