2012-02-08 51 views
0

我是grails的新手,我对如何编写我的类的其中一个属性的正确约束存在问题。我想检查输入是否包含空格('')。这是我的代码..如何检查一个属性是否在常规中占据一个空间?

static constraints = {  

username nullable: false, blank: false, minSize: 6, matches: /[A-za-z0-9_]{6,}/, validator: { 
      Account.countByUsername(it) < 1 
     } 

请帮帮我。

谢谢!

回答

1

你想使用一个自定义的验证,如:

username validator: { val -> if (val.contains(' ')) return 'value.hasASpace' } 

编辑:R.瓦尔布埃纳指出的那样,你需要你的countByUsername()验证更改为unique: true

+0

谢谢你这么多,但一旦我补充说,我的代码贴上面,我得到了有关Account.countByUsername(它)<1的错误消息,是有什么办法可以添加您给予验证,而不会改变Account.countByUsername (it)<1? – chemilleX3 2012-02-08 03:26:02

+1

对于用户名,您可能希望将该约束定义为username(unique:true),而不是执行计数查询 – 2012-02-08 05:55:14

+0

@R。 Valbuena是正确的。您的countByUsername验证器将导致验证在任何更新时失败。使用独特的:真实的是要走的路。仅供参考,如果您需要自定义验证程序来验证两个条件,验证程序只会检查这两个条件是否正确。 – erturne 2012-02-08 13:04:57

1

除了自定义验证程序,您还可以使用matchesvalidator以确保仅使用有效字符。

它看起来像你使用这个在你原来的问题,你正在使用不允许的空间正则表达式,所以用空间的用户名应是失败的验证。

如果你想给一个特殊的信息给别人,如果他们有它的空间(而不是其他一些无效字符),然后doelleri的答案是这样做的正确方法。

相关问题