【发布时间】:2013-06-06 14:14:42
【问题描述】:
当使用命令对象时:
class UserCommand {
String name
static constraints = {
name blank: false, unique: true, minSize: 3
}
}
您可以使用它们来验证对象,而无需使它们持久化。在我的情况下,我将验证持久类用户。
在控制器中:
def save(UserCommand cmd) {
if(!cmd.validate()) {
render view: "create", model: [user: cmd]
return
}
def user = new User()
user.name = cmd.name
user.save()
redirect uri: '/'
}
在messages.properties中:
user.username.minSize.error=Please enter at least three characters.
userCommand.username.minSize.error=Please enter at least three characters.
使用自定义验证消息时,您必须为每个错误编写两次消息代码。一个用于 User 类,另一个用于 UserCommand 类。
有没有办法让每个错误只有一个消息代码?
【问题讨论】:
-
这真的是一个直观的问题,让我想如果我可以在
UserCommand的约束中使用属性importFrom User来实现您所期望的。但不,它不能实现目标。最后,我认为您必须同时提供这两个消息。请参阅Validation and Internationalization,其中特别提到了类名。除非有另一种方法,否则我觉得您必须坚持以上才能在命令对象和域对象中应用验证。继承可能是我持怀疑态度的一个选项。
标签: validation grails grails-2.0 grails-domain-class grails-validation