2011-01-07 3 views
1

は、次のGrailsのURLマッピングを考えてみましょう:Grailsは常に、スラッシュ(/)で終わるURLを作成するように指示しますか?

class UrlMappings { 
    static mappings = { 
    "/something/${foo_id}/" { 
    controller = "foo" 
    action = "bar" 
    } 
} 

URLを生成する場合:そのノート

<a href="/something/123">foobar</a> 

...のような結果のリンクが見えます.. g:link ..

<g:link controller="foo" action="bar" params="[foo_id: 123]">foobar</g:link> 

を使用してsのURLマッピングの終了スラッシュは削除されます。

ただし、URL:/something/123/something/123/の両方が動作します。

私が構築しようとしているアプリケーションの要件のために、私は「スラッシュで終わり」を作り、URLを主なものにする必要があります。理想的には、スラッシュで終わらないURLに404を返すようにしたいと思います(標準的なページの問題を避けるため)。

GrailsがURLを作成する最も一般的な方法は次のとおりです。s上記のように終了スラッシュは削除されません。

解決方法の1つは、手動ですべてのURLを作成することですが、私はそのようにしたくありません。

答えて

5

残念ながら、GrailsのURLマッピングメカニズムはあまり洗練されていません。したがって、フォワードURLマッピングがうまくいく(つまり、URLからコントローラーへ)が、逆は、記述された結果を得るために手動で行わなければなりません。

おそらく、最良の方法は、目的のリンクを出力する独自のタグを作成することです。

1

groovyタグを作成する方法を探している場合は、常にスラッシュ(/)でURLの末尾を追加してください。gのようなリンクを作成するgrailsカスタムtagLibを作成することをお勧めします。リンクしてください。

しかし、それがスラッシュのないリンクでナビゲートを停止するかどうかわかりません。

関連する問題