Grails 2.0.1 の Grails コントローラでコマンド オブジェクトを使用しています。これは素晴らしい機能であり、完全に検証されたパラメーターを備えた非常に優れた簡潔なコントローラーにつながっています。いくつかの固定パラメーターといくつかの可変長パラメーターがあるコントローラーに実装された Web サービス呼び出しがある場合があります。私はいたるところでグーグルで検索しましたが、例が見つからないようです。grails のドキュメントは、一般的にコマンド オブジェクトに関してかなり簡潔です。Command オブジェクトがなくてもやりたいことはできますが、そうすると、他のすべての呼び出しで Command オブジェクトを使用するこの一連のコントローラーのパターンが崩れてしまいます。FWIW この特定の呼び出しは、データをバックエンドに送信する POST です。ここには Domain オブジェクトはありません。データはスプレッドシートの行に変換されています。
コードサンプルが役立つかどうかはわかりませんが、とにかくここにあります:
package com.companyname.platform.api
class ApiController {
static allowedMethods = [save:'POST', close:'POST', storeResults: 'POST']
def save = { APISaveCommand cmd->
doSaveAction(cmd)
}
def close = APICloseCommand cmd->
doCloseAction(cmd)
}
def storeResults = { params->
doStoreResults(params)
}
}
}
storeResults に Command オブジェクトがないことがわかりますか? 可変数のパラメーターを取ります。上記のコードでは、do*Action メソッドが、このコントローラーに挿入された Service にあると想定しています。doStoreResults(params) に問題はありませんが、コマンド オブジェクト パターンに固執したいと思います。