在 grails 中验证后处理所有控制器方法中的错误的最佳方法
Posted
技术标签:
【中文标题】在 grails 中验证后处理所有控制器方法中的错误的最佳方法【英文标题】:Best way to process errors in all controller methods after validation in grails 【发布时间】:2013-09-15 11:27:21 【问题描述】:我有许多方法的控制器,并使用命令对象来验证参数。但是对于每种方法,我必须调用 hasError() 并且如果它真的处理错误(通常意味着重定向到特殊页面)。
class MyController
def action1(ActionCommandObject cmd)
if(cmd.hasErrors())
//redirect to special page or throw an Exception
// do smth.
render view:'/myview1', model: []
def action2(ActionCommandObject cmd)
if(cmd.hasErrors())
//redirect to special page or throw an Exception
// do smth.
render view:'/myview2', model: []
// More similar methods
是否有可能在每种方法中避免处理错误情况?我的意思是如果验证失败则立即执行一些代码(例如抛出异常或重定向到错误页面)
我试图让命令对象在验证后做一些事情,但我不能,因为缺少 afterValidate 方法(beforeValidate 方法存在)
【问题讨论】:
【参考方案1】:你可以做类似described here:
class MyController
protected Object withCommandChecking( cmd, Closure closure )
if(cmd.hasErrors())
//redirect to special page or throw an Exception
return closure.call()
def action1(ActionCommandObject cmd)
withCommandChecking( cmd )
// do smth.
render view:'/myview1', model: []
def action2(ActionCommandObject cmd)
withCommandChecking( cmd )
// do smth.
render view:'/myview2', model: []
【讨论】:
感谢您的回答,但仍然需要在每个操作方法中调用错误处理方法。我的主要想法是动作方法不应该知道任何关于错误过程的信息,如果它已被调用,那么一切正常且参数有效,但如果参数无效动作方法尚未被调用(即没有要处理的代码) @AndrejSoroj this might be an alternative(使用过滤器) 浏览这篇文章。 ***.com/questions/10327091/…以上是关于在 grails 中验证后处理所有控制器方法中的错误的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章