grails - grails 中的自定义验证消息

标签 grails grails-orm grails-domain-class grails-2.0

我有一个域约束,我正在验证它,例如

userName(blank:false, nullable:false, Size: 5..50,matches:'^[A-Za-z\\d]*$',validator:{chkUser,user->if(user.loginService.getUser(user.organizationId,user.userName)!=null){
                                                                                                                    return[propertyName="userName"]}
                                                                                              })

所以我想做的是调用登录服务并查看用户名是否存在。如果用户名存在,我必须返回消息 UserName 已存在。我已将 message.properties 修改为:

BuildUserNameCommand.userName.matches= Username Should have alphanumeric characters only
BuildUserNameCommand.userName.invalid.userName=Username already exists
BuildUserNameCommand.userName.validator.error= Username already exists

buildusernamecommand是我的类(class)名称。我也尝试过return['invalid.userName']在约束中。但它仍然不显示自定义消息。

请帮帮我......

最佳答案

您是否看到命令对象的任何其他自定义消息(如匹配消息)? 用户名是全局唯一的还是仅在组织范围内唯一。如果全局唯一验证很容易 唯一:真实

如果只是在组织范围内唯一,您可以尝试从验证器返回字符串“alreadyExists”,然后以以下形式定义消息:

buildUserNameCommand.userName.alreadyExists = 'Username already exists'

如果这不起作用,另一种选择是从验证器返回 false。然后可能会拉入消息

buildUserNameCommand.userName.validator.error= Username already exists

请注意类名称中的小写b。不确定类是否需要以小写字母开头,但在我的代码中确实如此,而且它似乎更符合 Grails 模式。

关于grails - grails 中的自定义验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985334/

相关文章:

grails:将 grails 域类作为函数参数传递

Grails 后台线程,Quartz

grails - 如何在 Linux 操作系统下将我的 grails 应用程序从 http 转换为 https?

grails - 易于扩展 mongodb 与 mysql

hibernate - 如何在 Grails 中创建 "view"域对象

grails - Quartz 作业中的 org.hibernate.LazyInitializationException

hibernate - 使用 Grails 访问旧版 PostgreSQL 表时丢失表错误

grails - Grails中的MissingPropertyException

grails - 使用 Grail 2.4.4 配置 MySQL 数据库(无法创建池的初始连接)

grails - 使用Grails Spring Security Rest插件登录时获取用户详细信息