5

「ルート」コンテンツ (www.mydomain.com/about など) を持つ grails アプリケーションを開発しようとしていますが、リクエストのサブドメインに基づいて「プロジェクト」もサポートします。たとえば、myproject.mydomain.com > www.mydomain.com/myproject です。最初のパスとして、以下の URL 構成があります。

"/$controller/$action?/$id?" {
 ...
}

"/$project/$controller/$action?/$id?" {
    constraints {
    }
}

これまでの主な欠点は、 $project 変数をすべてのリンクに手動で挿入する必要があることです (退屈で DRY ではありません)。

<g:link controller="foo" action="bar" params="${[project: params.project]}">link</g:link>

$project パラメーターが存在する場合、すべてのリンクに自動的に挿入する方法はありますか、またはこの問題にアプローチするより良い方法はありますか?

4

2 に答える 2

1

基本的に、カスタム TagLib に基づく値を持つ新しいパラメーターをコントローラーに注入するgrails プラグインを作成できます(たとえば)。project<g:project bean="myproject"/>

プロジェクトの各 gsp ページでこの tagLib を定義する必要がありますが、それでも各リンクよりも DRYer です。

それが役に立てば幸い、

ファビアン。

于 2009-11-20T22:27:46.923 に答える
0

いくつか考えられます。

a) app-server の前にプロキシ (Apache など) を配置して、いくつかの URL 書き換えを行うことができます。おまけ: これにより、静的リソースのキャッシュを行うこともできます。

b) このソリューションは、技術的にもう少し興味深いものです。http ホスト ヘッダー (サブドメイン部分) に基づいてプロジェクトを検索できます。これにより、すべての URL を書き直す必要がなくなります。すべての Grails 規則が引き続き適用されるため、サードパーティのプラグインなどで問題が発生することはありません。

于 2009-11-22T12:29:12.520 に答える