第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何初始化 MessageSource 以注入控制器?

如何初始化 MessageSource 以注入控制器?

慕俠2389804 2023-06-14 15:41:54
我搜索了互聯(lián)網(wǎng)的大部分,但沒有找到明確的答案......我想做一件簡單的事情:就像在 Grails 中一樣,有一個單例MessageSource類型可以在控制器中使用它來顯示 i18n 消息。我想messageSource從這個文件初始化我的:src/main/resources/my/package/i18n/Messages*.propertiestest=FooBar初始化嘗試:class AppConfig {  @Singleton  MessageSource messageSource() {    new ResourceBundleMessageSource( 'my.package.i18n.Messages' )  }}要注入的控制器:class CRUDController<T> {  @Inject  MessageSource messageSource  @Transactional( readOnly=true )  @Get( '/' )  Map<String,Object> list() {    log.info "$messageSource -> ${messageSource.getMessage( 'test', MessageSource.MessageContext.DEFAULT )}"    [:]  }}日志信息打印如下:io.micronaut.runtime.context.CompositeMessageSource@79a1d030 -> Optional.empty因此, messageSource 以某種方式(和某處)被錯誤初始化。做這個簡單的事情最簡單直接的方法是什么?
查看完整描述

1 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊

請參閱https://github.com/jeffbrown/injecteermessagesource上的項目。


https://github.com/jeffbrown/injecteermessagesource/blob/beba0773d41cb475d8d837acc19d0dd41f5b4431/src/main/groovy/injecteermessagesource/CRUDController.groovy


package injecteermessagesource


import io.micronaut.context.MessageSource


import javax.inject.Inject


class CRUDController<T> {


    protected final Class<T> clazz


    @Inject

    MessageSource messageSource


    protected CRUDController( Class<T> clazz ) {

        this.clazz = clazz

    }


}

https://github.com/jeffbrown/injecteermessagesource/blob/471f6436511c99511426094a8c269112e93149e6/src/main/groovy/injecteermessagesource/PersonController.groovy


package injecteermessagesource


import io.micronaut.context.MessageSource

import io.micronaut.http.annotation.Controller

import io.micronaut.http.annotation.Get


@Controller('/people')

class PersonController  extends CRUDController<Person> {

    protected PersonController() {

        super(Person)

    }


    @Get('/')

    String index() {

        def context = MessageSource.MessageContext.DEFAULT

        def message = messageSource.getMessage('test', context)

        message.get()

    }

}

https://github.com/jeffbrown/injecteermessagesource/blob/471f6436511c99511426094a8c269112e93149e6/src/main/groovy/injecteermessagesource/AppConfig.groovy


package injecteermessagesource


import io.micronaut.context.MessageSource

import io.micronaut.context.annotation.Bean

import io.micronaut.context.annotation.Factory

import io.micronaut.context.i18n.ResourceBundleMessageSource


@Factory

class AppConfig {


    @Bean

    MessageSource messageSource() {

        new ResourceBundleMessageSource('my.somepackage.i18n.Messages')

    }

}

https://github.com/jeffbrown/injecteermessagesource/blob/471f6436511c99511426094a8c269112e93149e6/src/main/resources/my/somepackage/i18n/Messages.properties


test=FooBar

這一切似乎都有效:


$ curl localhost:8080/people

FooBar


查看完整回答
反對 回復(fù) 2023-06-14
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號