2011-12-30 13 views
0



Imが...
が(後でデータバインディングで使用される)、いくつかの異なるプレフィックスそのフィールドのを持つ巨大なフォームを持っている場合でありますコマンドオブジェクトを介して検証しようとしています...しかし、プレフィックスに使用される素敵なDOTが私に苦労していて、コマンドオブジェクトに適切にマップされた名前を得ることができません。のGrailsコマンドオブジェクトとフィールドがここにGrails 1.3.7を使用して

<input name="dealer.name" value="${dealer.name}" type="text"> 

とコマンドオブジェクトについて:

私たちは別の方法やマップでそれを見て....あれば何
class somethingCommand { 
    String name 
    Map dealer = [:] 
    static constraints = { 
     dealer validator: { 
      val, obj -> 
      obj.properties["name"] != "" 
     } 
    } 
} 

形で

は、このようなフィールドのようなフィールドを持っていますコマンドオブジェクトに渡す前のパラメータ... grails magicを使わずにコマンドオブジェクトにパラメータを渡す方法は?あなたは

def dealerMap = params["dealer"] 

を介して、コントローラで「ディーラー」のマップを取得し、その後、手でディーラーのコマンドopjectを作成してマップの内容を結合することができる

TNX

答えて

0

コマンドの場合:名前の

class DealerCommand { 
    String name 
    Map dealer = [:] 
} 

プロパティをオブジェクトを命令する接頭辞を持つ通常の

+0

が最終的な実装である: DEF docheck = {DealerformCommand ZCMD - > \t DEF cmdParams = [:] \t cmdParams [ '郵便番号'] = paramsは[ "zipCode.name"] \t ZCMD =新しいDealerformCommand() \t bindData(ZCMD、cmdParams) zcmd.validate() IF(zcmd.hasErrors()){ \t \t \tのprintln「\ NITはprovidiありますNGエラー:>>>>>>>>>>>}」 zcmd.errors.each { のprintlnそれ } \t}他{ \t \tのprintln "\ NITテスト" \tを通過した} \tレンダービュー: 'someForm' } – Sepi

0

データバインディングプロパティがサポートされているとおりに、コマンドオブジェクトの検証を使用することができます

def dealerCommand = new DealerCommand() 
bindData(dealerCommand , dealerMap) 

'name'、 'dealer'、 'dealer.name'、 'dealer.dealer'はコマンドオブジェクトに正しくバインドされます。だからここ

http://grails.org/doc/2.3.x/guide/single.html#commandObjects

関連する問題