我刚刚开始查看grails,我以前主要使用PHP,所以我的问题是将自定义验证方案添加到表单的最佳方法是什么。因此,假设我们在域中具有所有约束,但在某个控制器操作下,表单绑定到域我们要添加某种额外的自定义验证(对于参数sakes,假设我们有一个日期,仅在这种情况将来应该超过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
}
}
答案 1 :(得分:0)
我建议您在到达控制器之前使用jquery进行表单验证。如果需要,您还可以对gsp本身进行单独验证(例如,检查输入字段是否必需,仅接受电子邮件,仅接受整数等)。您甚至可以在控制器上执行此操作。但我认为使用jquery进行表单验证已经足够了:)