2012-04-24 71 views
2

任何人都可以向我解释如何以及grails中的哪些特定类与命令对象进行数据绑定?Grails与命令对象的数据绑定

我在JSON发布请求的情况下看到了一些奇怪的行为。例如,我嵌套了用自定义属性编辑器注册的命令对象。我的自定义属性编辑器仅在我有内部命令集合的情况下才会使用,即我在本例中看到setValue(Object obj)被调用。例如,

class TestCommand 
{ 
    List<InnerCommand> innerCommands = ListUtils.lazyList([], FactoryUtils.instantiateFactory(InnerCommand)) 
} 

但是,当我有一个简单的嵌套命令,我的属性编辑器不会被调用,我不想要。例如,

class TestCommand 
{ 
    InnerCommand cmd = new InnerCommand 
} 

在这种情况下,无论是setValue方法(obj对象),也没有我的自定义编辑setAsString(字符串文本)获取调用。

我正在使用JSON输入的post请求。请让我知道是否有人了解此行为。

+0

你能找出问题吗? – Alidad 2013-09-20 18:02:20

回答

0

存在实现Grails中

1命令对象双向)创建内部控制器 2命令对象)创建命令对象的src /常规目录内

两个方式必须定义注解类开始“前@ 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 
    } 

} 

注意:您需要通过 'EMAILID',并从.gsp页的 '密码' 值。