3

Grails を使用して似たようなものを既に実装したことがある人は、Facebook のように「 http://www.myservice.com/username 」という形式のユーザー プロファイル URL を作成するための適切な方法 (もしあれば) を教えてください。ツイッター、リンクイン?

UrlMappings を介して実装しようとしていますが、少なくともコントローラーについては、コード規則を破る必要があるようです。

だから、どんな提案も大歓迎です、ありがとう。

更新 1

コード規則を破ることについての懸念を述べたとき、私が言っているのは、このマッピングを使用してユーザー プロファイルを表示したいということですが、アプリケーションには、デフォルトのマッピングを使用してアクセスしたい他のオブジェクトがあります。

"/$controller/$action?/$id?"()

解決

ここで受け取った多大な貢献のおかげで、私の問題を解決するこのソリューションを思いつきました。

指摘されたように、この種のマッピングを行うには、リクエストの処理方法をより厳密に制御する必要があります。つまり、"username" ルールにマップしたくないコントローラーを Grails に伝える必要があります。

これは非常に面倒な作業になるため (複数のコントローラーがあるため)、自動化するために次のようにしました。

UrlMappings.groovy

static mappings = {
     getGrailsApplication().controllerClasses.each{ controllerClass ->
     "/${controllerClass.logicalPropertyName}/$action?/$id?"(controller: controllerClass.logicalPropertyName)
     }
     "/$username/$action?"(controller: "user", action: "profile")
     }
     ...
 }

そしてもちろん、ユーザー登録プロセスで同様の処理を行って、ユーザー名が一部のコントローラー名と等しくならないようにする必要があります。

以上です、皆様ありがとうございました。

4

2 に答える 2