2012-04-24 10 views
2

誰でもどのようにGrailsの特定のクラスがコマンドオブジェクトを使ってデータバインディングを行うのか説明できますか?コマンドオブジェクトを使ったGrailsのデータバインディング

JSON投稿要求の場合、私は奇妙な動作が見られます。たとえば、カスタムプロパティエディタに登録されているネストされたコマンドオブジェクトがあります。私のカスタムプロパティエディタは、内部コマンドのコレクションを持っている場合、つまりこの場合にsetValue(Object obj)が呼び出されているのを見ている場合にのみ使用されます。私は、単純なネストされたコマンドを持っている場合たとえば、私のプロパティエディタは、私がいけないどの

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

しかし、呼び出されません。例えば、この場合どちらのsetValue(オブジェクトobj)も私のカスタムエディタのsetAsString(文字列テキスト)で

class TestCommand 
{ 
    InnerCommand cmd = new InnerCommand 
} 

が呼び出さなっています。

私はJSON入力でのポストリクエストを使用しています。誰でもこの動作を理解していれば教えてください。

+0

問題を確認できましたか? – Alidad

答えて

0

コントローラ 2の内部コマンドオブジェクトを作成する)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 
    } 

} 
を入力あなたは合格する必要がある 'EMAILID' とあなた.gspページから 'パスワード' 値:

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 
    } 

} 

注意を入力します。

関連する問題