Grails自定义验证方案

时间:2013-02-02 18:53:42

标签: forms validation grails

我刚刚开始查看grails,我以前主要使用PHP,所以我的问题是将自定义验证方案添加到表单的最佳方法是什么。因此,假设我们在域中具有所有约束,但在某个控制器操作下,表单绑定到域我们要添加某种额外的自定义验证(对于参数sakes,假设我们有一个日期,仅在这种情况将来应该超过2周)。这样做的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

根据您的要求,您可以使用带约束的Command Object

@grails.validation.Validateable
class CommandObject {
    Date date

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

    }
}

修改

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

域对象:

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
    }
}

Sharing Constraints

答案 1 :(得分:0)

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