リンクを生成するときに、Grails のデフォルトの動作をオーバーライドする必要があります。目的は、現在のロケールに基づいて URL を変更することです。
DefaultUrlMappingsHolder を正常にオーバーライドしましたが、リンクが初めて作成されたときの最初の Web 要求でのみ機能します。Grails はどこかにリンクを保存しているように見えるので、次にcreateLink
同じコントローラーとアクションを作成するときに、リンクを作成するプロセスを再実行せずにリンクを表示するだけです。したがって、ロケールが変更されてもリンクは変更されません。
私がやったこと:
- 言語ごとに UrlMapping を作成します。たとえば
http://myapp/search
、http://myapp/suche
両方とも「SearchController」を指しています - DefaultUrlMappingsHolder をオーバーライドします。逆 URL マッピングを使用してリンクが作成されると、ロケールが考慮され、各ロケールの正しい URL マッピングが選択され、正しい URL が作成されます。
Grails のこの動作を停止し、リンク生成を強制的に再度実行するにはどうすればよいですか?
ありがとう。