
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命令对象自定义验证消息代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)