0

我刚开始研究 grails,我以前主要使用 PHP,所以我的问题是向表单添加自定义验证场景的最佳方式是什么。因此,假设我们在域中拥有所有约束,但是在某个控制器操作下,表单绑定到域,我们想要添加某种额外的自定义验证(为了参数,假设我们有一个日期,并且仅在这种情况应该在未来 2 周以上)。这样做的最佳方法是什么?

谢谢!

4

2 回答 2

2

根据您的要求,您可以使用带有约束的命令对象:

@grails.validation.Validateable
class CommandObject {
    Date date

    static constraints = {
        date(/*constraint here*/)

    }
}

编辑:

关于第二个问题,是的,您可以使用 将域对象的约束共享到命令对象importFrom [EntityName],请参见文档中的示例:

域对象:

class User {
    String firstName
    String lastName
    String passwordHash
    static constraints = {
        firstName blank: false, nullable: false
        lastName blank: false, nullable: false
        passwordHash blank: false, nullable: false
    }
}

命令对象:

class UserCommand {
    String firstName
    String lastName
    String password
    String confirmPassword   
    static constraints = {
        importFrom User
        password blank: false, nullable: false
        confirmPassword blank: false, nullable: false
    }
}

共享约束

于 2013-02-02T21:54:31.707 回答
0

我建议您在表单到达控制器之前使用 jquery 进行表单验证。如果需要,您还可以对 gsp 本身进行单独验证(例如,检查输入字段是否是必需的、仅接受电子邮件、仅接受整数等)。您甚至可以在控制器上执行此操作。但我认为使用 jquery 进行表单验证已经足够了 :)

于 2013-02-03T11:33:47.850 回答