我很难找出这个简单的代码出了什么问题:
这是我用来更改密码的命令:
package myapp.commands
import org.springframework.web.context.request.RequestContextHolder as RCH
import myapp.User
class PasswordCommand {
String currentPassword
String password
String passwordConfirm
private u
User getUser() {
def id = RCH.requestAttributes.session?.user?.id
if (!u && id) {
u = User.get(id)
}
return u
}
static constraints = {
currentPassword blank: false, validator: { val, cmd ->
if (cmd.user && cmd.user.password != val)
return "user.password.invalid"
}
...
}
在适当的 Controller 中,我使用以下操作:
def doPassword = { PasswordCommand cmd ->
if (!cmd.hasErrors()) {
User user = cmd.getUser()
...
不幸的是,当我尝试更改密码时,出现错误500:
URI: /Myapp/user/doPassword
Class: java.lang.NoSuchMethodError
Message: PasswordCommand.validate()Z
到底是怎么回事 ?!
最佳答案
添加@Validateable
批注:
import grails.validation.Validateable
...
@Validateable
class PasswordCommand {
...
}
关于validation - 命令类中缺少validate()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335357/