在圣杯中,
当违反特定的“唯一”约束时,我想设置出现的异常消息。
那可能吗?
用于每个约束的消息代码列在该约束的参考页面中,例如 http://grails.org/doc/latest/ref/Constraints/unique.html。从那里看起来你需要的代码是
com.project.ModelName.fieldName.unique=blah
您需要用适当的值替换 com.project.ModelName.fileName
感谢http://grails.1312388.n4.nabble.com/Custom-error-message-in-message-properties-td3335696.html
只是为了更新给定的答案,上面甚至文档似乎都建议:
此约束影响模式生成。
错误代码:className.propertyName.unique
但在我的应用程序中情况并非如此,也许 grails 3 中的情况发生了变化。我尝试了一个令人厌烦的变化,但仍然没有成功返回默认值。
对于其他面临这个问题的人来说,解决方案真的很简单。
找到返回响应的默认条目:
就我而言,我有两个条目:
##default.not.unique.message=Property [{0}] of class [{1}] with value [{2}] must be unique
##default.not.unique.message={0} must be unique
通过在行首添加哈希将它们都注释掉,并尝试再次保存记录。这次在我的 Web 界面上,我看到了实际的字段名称,而不是默认的 grails 消息。
unique.com.xxx.users.PhotosBean.imageSHa
我在messages.properties中添加了这个键的条目,发现一切运行良好。
还要注意它挂在子类而不是实际类上,也许在我的情况下它过于复杂。
在这些情况下的技巧是注释掉返回值的默认条目,然后在返回实际约束时重新启用。