0



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

フォームには、次のようなフィールドがあります。

<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の魔法を使わずにコマンドオブジェクトにパラメータを渡せばよいでしょうか?!?!?!

tnx

4

2 に答える 2

0

コマンド オブジェクトへのプレフィックスを使用したデータ バインディング プロパティがサポートされています。

コマンドの場合:

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

「name」、「dealer」、「dealer.name」、および「dealer.dealer」という名前のプロパティは、コマンド オブジェクトに正しくバインドされます。

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

于 2014-05-27T19:00:07.527 に答える
0

コントローラーで「ディーラー」マップを取得できます

def dealerMap = params["dealer"]

次に、手動でディーラー コマンド オブジェクトを作成し、マップ コンテンツをバインドします。

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

その後、通常どおりコマンド オブジェクトの検証を使用できます。

于 2012-01-02T14:41:11.703 に答える