gpt4 book ai didi

grails - 处理 Grails 域类验证错误的最佳方法

转载 作者:行者123 更新时间:2023-12-01 08:29:16 25 4
gpt4 key购买 nike

我们有一个像“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 中得到的:

Field error in object 'com.example.Student' on field 'email': rejected value [student@example.com]; codes [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,unique]; arguments [email,class com.example.Student,student@example.com.org]; default message [Property [{0}] of class [{1}] with value [{2}] must be unique]

我怎么知道这意味着电子邮件已经在数据库中使用,以便我可以告诉 API 用户?

(明确地说,我想提供一个计算机可读的消息,例如“EMAIL_DUPLICATE”,而不是“具有值 student@example.com 的 Student 类的属性电子邮件必须是唯一的”)

最佳答案

不确定它是否适用于除此之外的更多情况,但确实如此:

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

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

关于grails - 处理 Grails 域类验证错误的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com