我需要一种方法,在成功时返回 Id,在失败时返回错误列表。 前代码片段:
def save = {
def errors = []
if(Employee.save(flush:true)){
return Employee.id
}else{
errors.add("Can't be saved")
return errors.
}
}
在服务类中 网络电话 Employee.save() - ..那么如何检查 save 方法返回的是错误还是 id
如有任何建议,我们将不胜感激。
最佳答案
我同意 Burk 不要返回不同的类型,这可能会导致意外的错误。 解决这个问题的另一个方法是使用Java的异常处理机制。您可以向异常添加一个上下文字段,该字段将保存验证错误列表。捕获异常后,您可以提取错误。
void save(Employee employee) {
// do save
// ...
// on error:
def errors = [ "terrible error nr. 5" ]
throw new ValidationException(errors)
}
try {
fooService.save(employee)
} catch(ValidationException e) {
def errors = e.erorrs
// do stuff with the errors
}
另一个优点:当预计不会出现验证错误时,可以在 Groovy 中省略 try-catch block ,这使得代码更简洁,因为您不必关心任何验证错误字段。
关于grails - 如何处理 groovy 方法中的多个返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327091/