レガシーデータベースの上にgrails(2.1.0)アプリケーションを構築しようとしています。たくさんのテーブルがあり、ダイナミックな足場だけを使いたいです。問題は、一部のテーブルに主キーとして文字列が含まれていることですが、src / templates / scaffolding /Controller.groovyのテンプレートコード(例:show)は
def show(Long id) {
def ${propertyName} = ${className}.get(id)
if (!${propertyName}) {
flash.message = message(code: 'default.not.found.message', args: [message(code: '${domainClass.propertyName}.label', default: '${className}'), id])
redirect(action: "list")
return
}
[${propertyName}: ${propertyName}]
}
文字列キーの場合、これにより文字列がnullに変わるようで、getはエラーで失敗します$Domain not found with id null
。
generate-controllerを実行し、署名をに変更するとdef show(String id)
、期待どおりに機能します。
では、「動的スキャフォールディング時」にドメインクラスを検査し、それに応じてメソッドを作成する方法はありますか?