3

我们有一个像“student/create”这样的 API 命令来创建一个新的学生对象。代码如下所示:

def student = new Student(firstName: firstName, lastName: lastName, email: email)

if (! student.validate()) {
    response.error = "UNKNOWN_ERROR" // in case we can't find anything better

    student.errors.allErrors.each { error ->
        // set response.error to an appropriate value
        println error
    }
} else {
    student.save()
}

我们的目标是在验证失败时给出合理的错误消息,例如“EMAIL_DUPLICATE”或“FIRSTNAME_LENGTH”,因此我们希望根据一组预期错误来测试我们得到的错误,以便我们可以做出这样的响应。

这是我们从中得到的println

字段“电子邮件”上的对象“com.example.Student”中的字段错误:拒绝值 [student@example.com];代码 [com.example.Student.email.unique.error.com.example.Student.email,com.example.Student.email.unique.error.email,com.example.Student.email.unique.error.java。 lang.String,com.example.Student.email.unique.error,student.email.unique.error.com.example.Student.email,student.email.unique.error.email,student.email.unique.error。 java.lang.String,student.email.unique.error,com.example.Student.email.unique.com.example.Student.email,com.example.Student.email.unique.email,com.example.Student。 email.unique.java.lang.String,com.example.Student.email.unique,student.email.unique.com.example.Student.email,student.email.unique.email,student.email.unique.java。 lang.String,student.email.unique,unique.com.example.Student.email,unique.email,unique.java。lang.String,唯一]; 论据 [电子邮件,com.example.Student 班级,student@example.com.org];默认消息 [类 [{1}] 的属性 [{0}],值为 [{2}] 必须是唯一的]

我如何才能确定这意味着该电子邮件已在数据库中使用,以便我可以告诉 API 用户?

(要清楚,我想给出一个计算机可读的消息,比如“EMAIL_DUPLICATE”,而不是“学生的属性电子邮件,价值 student@example.com 必须是唯一的”)

4

1 回答 1

4

不确定它是否会在更多情况下起作用,而不仅仅是这种情况,但确实:

    println "${error.objectName}_${error.codes[-1]}".toUpperCase()

把你带到附近的任何地方?

于 2013-03-06T14:43:02.013 回答