验证 – Grails命令对象自定义验证消息代码

验证 – Grails命令对象自定义验证消息代码,第1张

概述使用命令对象时: class UserCommand { String name static constraints = { name blank: false, unique: true, minSize: 3 }} 您可以使用它们来验证对象,而不会使它们持久化.在我的情况下,我将验证持久类用户. 在控制器中: def save(UserCommand cm 使用命令对象时:

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类.

有没有办法我每个错误只能有一个消息代码?

解决方法 我可能在这里错了,但如果您只使用Grails约束,则共享验证消息的唯一方法是简单地依赖messages.propertIEs中的default.x.x.message键/值.否则,将通过以下密钥表单查找消息:

classname.propertyname.errorcode...=

但是,您可以使用custom validator并覆盖为验证错误返回的消息密钥.

class User {  ...  static constraints = {    ...    name blank: false,valIDator: { value,user ->      if(!value || value.length() < 3)        return 'what.ever.key.in.messages.propertIEs'    }  }}

然后你可以通过global constraint或者@dmahapatro在类之间共享约束来保持所有DRY,在你的UserCommand中使用importFrom就像这样,

class UserCommand { ... static constraints = {   importFrom User   ...  }}

如果您有更复杂的验证,则可以创建自己的约束类.以下是一些资源:

http://www.zorched.net/2008/01/25/build-a-custom-validator-in-grails-with-a-plugin/
http://blog.swwomm.com/2011/02/custom-grails-constraints.html

总结

以上是内存溢出为你收集整理的验证 – Grails命令对象自定义验证消息代码全部内容,希望文章能够帮你解决验证 – Grails命令对象自定义验证消息代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1077472.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存