gpt4 book ai didi

validation - Grails:自定义验证器中无法访问 transient 变量?

转载 作者:行者123 更新时间:2023-12-02 16:03:14 24 4
gpt4 key购买 nike

我找不到 obj.confirmPassword 的原因始终为空。
如果 confirmPassword不是 transient 的一部分,一切正常。

String confirmPassword
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired

static transients = ['springSecurityService', 'confirmPassword']

static constraints = {
username blank: false, unique: true, minSize: 4, maxSize: 64
password blank: false, nullable: false, minSize: 4, maxSize: 64, validator: {password, obj ->
def password2 = obj.confirmPassword
password2 == password ? true : ['invalid.matchingpasswords']
}
userFullname blank: false, minSize: 4, maxSize: 64
}

这个在调用 save() 时抛出 NullPointer:
String confirmPasswordField
static transients = ['springSecurityService', 'confirmPasswordField']

static constraints = {
confirmPasswordField bindable: true, nullable:true, blank: false
username blank: false, unique: true, minSize: 4, maxSize: 64
password blank: false, nullable: false, minSize: 4, maxSize: 64, validator: {password, obj ->
def confirmPassword = obj.confirmPasswordField
confirmPassword == password ? true : ['invalid.matchingpasswords']
}
userFullname blank: false, minSize: 4, maxSize: 64
}

如果我评论有关 confirmPasswordField 的所有内容 - save() 很好。

最佳答案

出于安全原因, transient 不再自动绑定(bind)。但是您可以通过添加“可绑定(bind)”约束轻松使其工作(参见 http://grails.org/doc/latest/ref/Constraints/bindable.html)。您可以像这样使用确认密码。

confirmPassword(bindable: true, nullable:true, blank: false)

关于validation - Grails:自定义验证器中无法访问 transient 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28011148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com