validation - 命令类中缺少validate()方法

标签 validation grails

我很难找出这个简单的代码出了什么问题:

这是我用来更改密码的命令:

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/

相关文章:

mysql - 如果数据存在,则 Form_validation 未运行

grails - 用于获得类似功能的插件或方法,例如Grails中的django-reversion

java - JoptionPane 验证遇到问题

javascript - meteor MDG :validated-method without using simple schema

session - Grails-UnsupportedOperationException-集成测试

grails - 如何搜索内部类?

spring - Grails中的JMS请求/答复模式

Grails 对象引用未保存的 transient 实例

javascript - 有没有办法使用相同的选项验证 html 中的 2 个选择标记?使用 JavaScript

javascript : validate upper case and lower case