有人可以向我解释一下grails中的哪些特定类和命令对象的数据绑定是什么?
在JSON帖子请求的情况下,我看到了一些奇怪的行为。例如,我有嵌套的命令对象,这些命令对象是使用自定义属性编辑器注册的。我的自定义属性编辑器仅在我有内部命令的集合时使用,即我看到在这种情况下调用setValue(Object obj)。例如,
class TestCommand
{
List<InnerCommand> innerCommands = ListUtils.lazyList([], FactoryUtils.instantiateFactory(InnerCommand))
}
但是当我有一个简单的嵌套命令时,我的属性编辑器没有被调用,我不想要。例如,
class TestCommand
{
InnerCommand cmd = new InnerCommand
}
在这种情况下,我的自定义编辑器的setValue(Object obj)和setAsString(String text)都没有被调用。
我正在使用带有JSON输入的帖子请求。如果有人理解这种行为,请告诉我。
答案 0 :(得分:0)
在Grails中实现命令对象有两种方法
1)在控制器内创建命令对象 2)在src / groovy目录中创建命令对象
两种方式都必须在课程开始之前定义注释“@ grails.validation.Validateable”
1)输入1 LoginController.groovy
class LoginController{
def login(){
LoginCommand loginCommand=new LoginCommand()
bindData(loginCommand, params)
if(loginCommand.validate()){
render 'login success'
}else{
render 'invalid user name or password'
}
}
}
@grails.validation.Validateable
class LoginCommand {
String emailId
String password
static constraints = {
emailId blank:false,nullable:false,email:true
password blank:false,nullable:false
}
}
2)输入2 LoginCommand.groovy
@grails.validation.Validateable
class LoginCommand {
String emailId
String password
static constraints = {
emailId blank:false,nullable:false,email:true
password blank:false,nullable:false
}
}
注意:您需要从.gsp页面传递'emailId'和'password'值。