4

このようmessageSourceに定義された Grails i18n プラグインで定義された Bean があります。

messageSource(PluginAwareResourceBundleMessageSource) {
  basenames = baseNames.toArray()
  fallbackToSystemLocale = false
  pluginManager = manager
  ....
}

fallbackToSystemLocale次のような、resources.groovyの値だけの構成をオーバーライドすることは可能ですか。

messageSource {
    fallbackToSystemLocale = true
} 

上記は機能せず、次のエラーが表示されます。

4

1 に答える 1

6

単に Bean を更新しない理由はありますBootStrap.groovyか?

class BootStrap {
    def def messageSource
    def init = { servletContext ->
        messageSource.fallbackToSystemLocale = true
    }
}

BootStrap が実行される前に Bean を変更する場合は、このブログ投稿BeanPostProcessorのas を使用できます。

src/groovy/yourpkg/CustomBeanPostProcessor:

import org.springframework.beans.factory.config.BeanPostProcessor

class CustomBeanPostProcessor implements BeanPostProcessor{

    @Override
    Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean
    }

    @Override
    Object postProcessAfterInitialization(Object bean, String beanName) {
        if(beanName == 'messageSource') {
            bean.setFallbackToSystemLocale = true
        }
        return bean
    }
}

resources.groovy:

beans = {
    customBeanPostProcessor(CustomBeanPostProcessor)
}
于 2013-04-17T15:18:48.377 に答える