1
私のGrailsアプリケーションでは、ドメインクラスが2つあります。例えば、Author
とBook
です。私は、デフォルトのURLマッピングを使用しています:GrailsのURLマッピング
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
}
だから、ID 2で書籍を表示するには、相対URLは/book/show/2
あるまたはID 5との著者のためには、/author/show/5
です。 Author
とBook
クラスの両方に固有のname
プロパティがあります。
私は著者または本を表示するURLが、その書籍/著者を識別するためにデータベースIDではなく名前を使用することを希望します。 /author/show/shakespeare
および/book/show/ulysses
。名前フィールドがid(主キー)であるようにドメインクラスを変更することなく達成可能ですか?
これで簡単にテストしたところ、うまくいくように見えました。 'http://example.com:8080/myapp/books/show/Book1'に行き、" Book1 "という名前の私のブートストラップされた本をレンダリングするのを見ました。確かに、これはあなたのコントローラでかなりの量の作業を必要とします。 –
コントローラを変更するのは簡単なことです - おそらく、各ドメインクラスに対して1つのアクションを(1行で)変更するだけです。より困難な部分は、そのアクションが呼び出されるすべての場所を追跡し、IDの代わりに名前を送信するように変更することです。とにかく、選択肢がないように見えるので、あなたは欲しいチェックマークに勝ちます。心のこもったおめでとう、ありがとう。 –