2
ビジネスロジックでいくつかのタイプのエラーメッセージが必要なWebアプリケーションを開発しています。Grails 2.5.5 - サービス層でエラーメッセージの国際化を改善する方法は?
私のサービス層でこれが原因で私はmessageSource
へのいくつかの呼び出しがあります。同時に
def messageSource
私は、ユーザによって指定されLocale
を定義する必要があるので、私のアプリケーションは、いくつかの言語をサポートしている必要があります。
Locale
を取得しています、これを行うには:
def request = RequestContextHolder.currentRequestAttributes().request
Locale myLocale = RequestContextUtils.getLocale(request)
しかし、私は、このコードは私のサービス層全体に繰り返されることに注意してください。すなわち:
def myMethod(){
...
messageSource.getMessage("message.code", [args] as Object[],"Default message",getLocale())
...
}
Locale getLocale(){
def request = RequestContextHolder.currentRequestAttributes().request
return RequestContextUtils.getLocale(request)
}
私のすべてのサービスとコントローラの間でこの方法を共有するためのエレガントな方法はありますか?または、この動作を改善する他の方法がありますか?
のGrails 2.5.5 - Groovyの2.4.4
ありがとう!
UserLocaleは形質である場合so .. SomeServiceは、UserLocaleを拡張または実装していますか? – NachoB
good'ol継承に何が問題なのですか? – injecteer
私は道具を試しましたが、それはコンパイルされませんでしたが、私はあなたが正しいと思うし、それは実装すべきです。 @インジェクターLOL!技術的にも継承はうまくいくでしょう。しかし、追加のメソッドを再利用する必要がある場合は、 "god base class"または混乱するクラス階層のいずれかになります。特性によって、必要な行動だけを引き出すことが可能になります。 –