Grails Scaffoldingを使って、いくつかのレガシーデータベーステーブル(これまでサガについてはthis previous StackOverflow questionを参照)でCRUDアプリケーションを一緒にスローしようとしました。私は今問題の最悪を過ぎており、機能するCRUDアプリを持っていますが、一般的な使いやすさには1つの問題が残っています。Grails外部キー関連のフレンドリーなラベル(IDキーの代わりに)を使った足場
私のドメインオブジェクトの多くは、他のドメインオブジェクトとの外部キー関連を持っています。 Contact
は、Owner
に属しなど
しかし、Contact
のためのCRUDページに、私はそれが人間のユーザには何の意味もないので... Owner
の実際のid
キーを表示したくありません。代わりに画面に人にやさしいOwner.name
の値を表示します。
"list"と "show"ビューは、Viewの自動生成コード内のすべての属性を明示的に処理し、そのコードを調整して表示内容を制御することができます。ただし、「作成」ビューと「編集」ビューではすべての属性がリストされません。代わりに、これらのビューは、このようなGrailsのタグライブラリの呼び出しのいくつかの種類ます
...
<fieldset class="form">
<g:render template="form"/>
</fieldset>
...
この呼び出しを明らかにフィールドがあり、それらを表示する方法についての独自の判断をするもの、実行時に自動的に検出。アソシエーションを持つドメインオブジェクトの場合、より人間に優しいアトリビュートではなく、関連付けられたオブジェクトの不器用なIDを表示するという悪い決定をします。
フィールドが「編集」ビューまたは「作成」ビューに表示される方法を変更するための「簡単」(または少なくとも「ベストプラクティス」)方法はありますか?確かにこれは、スカフォールドを使用すると関連があるドメインオブジェクトで使用されるときは常に共通の問題です。あなたがいるときに今
class Owner {
String id // not human-friendly
String name // human-friendly
// ...etc...
String toString() {
return name
}
}
:
これは問題ですが、上記のコードスニペットは、そのドメインオブジェクトの自動生成ビューと同じディレクトリに自動生成された "_form.gsp"ファイルからHTMLを取得するだけです。 –