GVKun编程网logo

自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?(springboot自定义消息转换器)

12

本文的目的是介绍自定义SpringBoot入门程序:如何将i18n消息贡献给MessageSource?的详细情况,特别关注springboot自定义消息转换器的相关信息。我们将通过专业的研究、有关数

本文的目的是介绍自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?的详细情况,特别关注springboot自定义消息转换器的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?的机会,同时也不会遗漏关于java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法、java-假设Spring MessageSource实现是线程安全的吗?、Java——Struts2 之国际化 struts.custom.i18n.resources=globalMessages、org.springframework.context.support.MessageSourceAccessor的实例源码的知识。

本文目录一览:

自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?(springboot自定义消息转换器)

自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?(springboot自定义消息转换器)

我正在编写一个自定义的Spring Boot入门程序,其他开发人员将其放入他们的应用程序中,并且该入门程序包含开箱即用的控制器和UI屏幕。

这些UI屏幕已经国际化,并且i18n键/值在打包文件中:com/foo/wherever/i18n.properties

我想确保在启动时加载启动程序时,这些i18n.properties可以MessageSource自动在应用程序中使用,以便我的UI页面可以工作(通过常规Spring
Controller + ViewResolver + View实现呈现), 而无需应用程序开发人员指定此自己归档

换句话说,他们应该能够将我的启动器添加到其运行时类路径中,并且一切都“正常运行”而无需进行任何配置。

现在,我发现应用程序开发人员可以创建自己的src/main/resources/messages.properties文件 并在中
手动配置其他消息文件application.properties

spring.messages.basename = messages, com.foo.wherever.i18n

这将起作用。

但是,这需要满足以下两个条件:

  1. 他们必须手动配置spring.messages.basename属性-这不是自动的。和
  2. 他们必须messages.properties在其应用程序类路径中具有自己的文件。如果messages.properties文件不存在,spring.messages.basename则什至不起作用。即使他们不关心i18n,这仍然是必需的-不理想。

我想我 可以
将我的i18n.properties文件移动到启动程序.jar中的classpath:/messages.properties文件中,但这似乎不是一个好的解决方案:如果应用程序开发人员拥有自己的messages.properties文件,则其中只有一个它们将被读取,从而导致缺少消息值。

看起来好像春天启动MessageSourceAutoConfiguration应该有一个概念CompositeMessageSource是在一个或多个迭代MessageSource实例可用(并且Order在Spring的ApplicationContext
ED)和
所使用的DispatcherServlet的。这将使任何入门者只需MessageSource在其自动配置中声明一个即可为可用消息做出贡献

我可以按照我的要求去做吗?对于应用程序开发人员来说,最“轻松”的解决方案是什么?

答案1

小编典典

也许这是一个远景,但是您可以尝试使用BeanFactoryPostProcessor。

想法如下:

  1. 从应用程序上下文中取出“ messageSource” bean。请注意,如果例如开发人员想要使用自己的实现并且不使用spring boot自动配置,则可能但不一定是spring boot的。

  2. 将其替换为您自己的尝试解析“您的键”的实现,其余的委托给原始消息源。反之亦然,如果您想让开发人员覆盖您的翻译(如果原始消息源没有为未知键抛出异常,则可能会出现问题)。

但是,也许有更好的方法可以做到这一点。

java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法

java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法

我有几个servlet旨在保存自己的消息源,但是有一个静态函数使用此消息源作为备份,并且在正常情况下使用全局BDB来检索本地化文本.

我想知道是否有一种方法可以检索调用此全局静态函数的servlet上下文的MessageSource?

我不能在所有servlet中使用MessageSourceAware.我查看了Spring文档,发现了MessageSourceAware和@autowired属性.我不能使用注释,因为我使用的是Spring 2.0.

任何帮助赞赏.

谢谢,
PARTH

最佳答案
如果您的MessageSource是在WebApplicationContext中定义的,则可以通过以下方式检索它:

WebApplicationContext webAppContext = RequestContextUtils.getWebApplicationContext(request);
MessageSource messageSource = webAppContext.getBean("messageSource");

java-假设Spring MessageSource实现是线程安全的吗?

java-假设Spring MessageSource实现是线程安全的吗?

是否可以安全地假设org.springframework.context.MessageSource接口的所有实现在初始化后都是线程安全的?

我希望它是安全的,但是现在我正在查看Spring源代码,并且有org.springframework.context.support.ReloadableResourceBundleMessageSource会不时地重新加载属性,并且文档中没有任何关于线程安全的内容. ..

编辑:看来ReloadableResourceBundleMessageSource确实确实在需要的地方被同步了……但是我的原始问题仍然存在.

最佳答案
只是看了一下源代码-任何地方都没有同步的关键字,并且没有可写状态.不,它不是线程安全的.

这么说,从您的应用程序的角度来看,脏读有什么危害?标签或消息值错误?您可能不必担心缺少值,因为如果将JSP或类修改为使用新消息,则必须重新部署整个应用程序.我认为您在这里很安全.

Java——Struts2 之国际化 struts.custom.i18n.resources=globalMessages

Java——Struts2 之国际化 struts.custom.i18n.resources=globalMessages

1. 在 src 下 建立 struts.properties 文件,内容为:struts.custom.i18n.resources=globalMessages

  struts.custom.i18n.resources 是固定写法,在 struts2 核心包中可以找到。

2. 在 src 下 建立 globalMessages_en.properties (代表英文国际化)、建立 globalMessages_zh.properties(中文国际化)文件

  globalMessages_en.properties 内容为:(命名 = 你想要显示的名字)

  username=username
  password=password

  globalMessages_zh.properties 内容为:(命名 = 你想要显示的名字)

  username=\u7528\u6237\u540D
  password=\u5BC6\u7801

建议:在中文的文件中,直接在 Properties 页面中点击 Add 进行添加,不然直接写的话,系统不认识,报错。

3.jsp 文件:

<h1><font color="red">Input UserInfo</font></h1>
    <s:form action="userlogin">
        <s:textfield name="user.username" label="%{getText(''username'')}"></s:textfield>
        <s:textfield name="user.password" label="%{getText(''password'')}"></s:textfield>
        <s:submit label="submit"></s:submit>
    </s:form>

  label="%{getText (''username'')}" 就是获取国际化文件中所配置的内容。

4. 结果:

org.springframework.context.support.MessageSourceAccessor的实例源码

org.springframework.context.support.MessageSourceAccessor的实例源码

项目:credhub    文件:AuditOAuth2AccessDeniedHandler.java   
@Autowired
public AuditOAuth2AccessDeniedHandler(
    TokenStore tokenStore,RequestAuditRecordDataService requestAuditRecordDataService,SecurityEventsLogService securityEventsLogService,UserContextFactory userContextFactory,WebResponseExceptionTranslator exceptionTranslator,AuditLogFactory auditLogFactory,MessageSourceAccessor messageSourceAccessor
) {
  this.userContextFactory = userContextFactory;
  this.tokenStore = tokenStore;
  this.requestAuditRecordDataService = requestAuditRecordDataService;
  this.securityEventsLogService = securityEventsLogService;
  this.exceptionTranslator = exceptionTranslator;
  this.auditLogFactory = auditLogFactory;
  this.messageSourceAccessor = messageSourceAccessor;
}
项目:openmrs-module-legacyui    文件:ModuleListController.java   
@Override
protected Map<String,Object> referenceData(HttpServletRequest request) throws Exception {
    Map<String,Object> map = new HashMap<String,Object>();
    MessageSourceAccessor msa = getMessageSourceAccessor();

    map.put("allowAdmin",ModuleUtil.allowAdmin().toString());
    map.put("disallowUploads",msa.getMessage("Module.disallowUploads",new String[] { ModuleConstants.RUNTIMEPROPERTY_ALLOW_ADMIN }));

    map.put("openmrsversion",OpenmrsConstants.OPENMRS_VERSION_SHORT);
    map.put("moduleRepositoryURL",WebConstants.MODULE_REPOSITORY_URL);

    map.put("loadedModules",ModuleFactory.getLoadedModules());

    return map;
}
项目:spring-rich-client    文件:DefaultRegisterableExceptionHandler.java   
public void uncaughtException(Thread thread,Throwable throwable) {
    LogFactory.getLog(ApplicationLifecycleAdvisor.class).error(throwable.getMessage(),throwable);
    String exceptionMessage;
    if (throwable instanceof MessageSourceResolvable) {
        exceptionMessage = ((MessageSourceAccessor) applicationservicesLocator.services()
                .getService(MessageSourceAccessor.class))
                .getMessage((MessageSourceResolvable) throwable);
    } else {
        exceptionMessage = throwable.getLocalizedMessage();
    }
    if (!StringUtils.hasText(exceptionMessage)) {
        String defaultMessage = "An application exception occurred.\nPlease contact your administrator.";
        exceptionMessage = ((MessageSourceAccessor) applicationservicesLocator.services()
                .getService(MessageSourceAccessor.class))
                .getMessage("applicationDialog.defaultException",defaultMessage);
    }

    Message message = new DefaultMessage(exceptionMessage,Severity.ERROR);
    applicationwindow activeWindow = Application.instance().getActiveWindow();
    JFrame parentFrame = (activeWindow == null) ? null : activeWindow.getControl();
    JOptionPane.showMessageDialog(parentFrame,message.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
}
项目:spring-rich-client    文件:DefaultBindingErrorMessageProviderTests.java   
public void testGetErrorMessage() {
    DefaultBindingErrorMessageProvider provider = new DefaultBindingErrorMessageProvider();

    TestAbstractFormModel formModel = new TestAbstractFormModel(new Object()) {
        public FieldFace getFieldFace(String field) {
            return new DefaultFieldFace("Some Property","",new LabelInfo("Some Property"),null);
        }
    };
    formModel.add("someProperty",new ValueHolder("value"));

    StaticmessageSource messageSource = new StaticmessageSource();
    messageSource.addMessage("typeMismatch",Locale.getDefault(),"{0} has an invalid format \"{1}\"");
    MessageSourceAccessor messageSourceAccessor = new MessageSourceAccessor(messageSource);
    provider.setMessageSourceAccessor(messageSourceAccessor);

    ValidationMessage message = provider.getErrorMessage(formModel,"someProperty","new value",new IllegalArgumentException());

    assertNotNull(message);
    assertEquals("someProperty",message.getproperty());
    assertEquals("Some Property has an invalid format \"new value\"",message.getMessage());
}
项目:gocd    文件:LocalizerTest.java   
@Test
public void shouldReturnTheFormattedLocalizedMessage() {
    CurrentLocale locale = new CurrentLocale();
    ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
    source.setBasename("test_message");
    MessageSourceAccessor accessor = new MessageSourceAccessor(source);
    Localizer localizer = new Localizer(accessor,locale);

    assertthat(localizer.localize("hello_world"),is("Hello World"));

    locale.setLocaleString(Localizer.LOCALE_ENGLISH_US);
    assertthat(localizer.localize("MY_HOME","San Francisco"),is("My home is San Francisco"));

    locale.setLocaleString(Localizer.LOCALE_KANNADA);
    assertthat(localizer.localize("MY_HOME","ಬೆಂಗಳೂರು"),is("ನಮ್ಮ ಊರು ಬೆಂಗಳೂರು"));

    locale.setLocaleString(Localizer.LOCALE_KANNADA);
    assertthat(localizer.localize("MY_BIRTHDAY",new DateTime(1984,12,23,14,DateTimeZone.UTC).toDate()),is("ನನ್ನ ಹುಟ್ಟು ಹಬ್ಬ 12/23/84"));

    locale.setLocaleString(Localizer.LOCALE_ENGLISH_US);
    assertthat(localizer.localize("MY_BIRTHDAY",is("My birthday is 12/23/84"));

}
项目:spring-richclient    文件:DefaultRegisterableExceptionHandler.java   
public void uncaughtException(Thread thread,JOptionPane.ERROR_MESSAGE);
}
项目:spring-richclient    文件:DefaultBindingErrorMessageProviderTests.java   
public void testGetErrorMessage() {
    DefaultBindingErrorMessageProvider provider = new DefaultBindingErrorMessageProvider();

    TestAbstractFormModel formModel = new TestAbstractFormModel(new Object()) {
        public FieldFace getFieldFace(String field) {
            return new DefaultFieldFace("Some Property",message.getMessage());
}
项目:spring-data-rest-android    文件:Jackson2HalModule.java   
public HalLinkListSerializer(BeanProperty property,CurieProvider curieProvider,EmbeddedMapper mapper,MessageSourceAccessor messageSource) {

    super(List.class,false);
    this.property = property;
    this.curieProvider = curieProvider;
    this.mapper = mapper;
    this.messageSource = messageSource;
}
项目:spring-data-rest-android    文件:Jackson2HalModule.java   
public HalHandlerInstantiator(RelProvider resolver,MessageSourceAccessor messageSource,boolean enforceEmbeddedCollections) {

    EmbeddedMapper mapper = new EmbeddedMapper(resolver,curieProvider,enforceEmbeddedCollections);

    Assert.notNull(resolver,"RelProvider must not be null!");
    this.instanceMap.put(HalResourcesSerializer.class,new HalResourcesSerializer(mapper));
    this.instanceMap.put(HalLinkListSerializer.class,new HalLinkListSerializer(curieProvider,mapper,messageSource));
}
项目:credhub    文件:X509AuthenticationFailureHandler.java   
@Autowired
X509AuthenticationFailureHandler(
    MessageSourceAccessor messageSourceAccessor,ObjectMapper objectMapper
) {
  this.objectMapper = objectMapper;
  this.messageSourceAccessor = messageSourceAccessor;
}
项目:credhub    文件:AuditOAuth2AuthenticationExceptionHandler.java   
@Autowired
AuditOAuth2AuthenticationExceptionHandler(
    CurrentTimeProvider currentTimeProvider,AuthFailureAuditRecordDataService authFailureAuditRecordDataService,MessageSourceAccessor messageSourceAccessor,AuditLogFactory auditLogFactory
) {
  this.currentTimeProvider = currentTimeProvider;
  this.authFailureAuditRecordDataService = authFailureAuditRecordDataService;
  this.auditLogFactory = auditLogFactory;
  this.objectMapper = JsonParserFactory.create();
  this.messageSourceAccessor = messageSourceAccessor;
}
项目:credhub    文件:OAuth2ExtraValidationFilter.java   
@Autowired
OAuth2ExtraValidationFilter(
    OAuth2IssuerService oAuth2IssuerService,TokenStore tokenStore,AuditOAuth2AuthenticationExceptionHandler oAuth2AuthenticationExceptionHandler,AuthenticationEventPublisher eventPublisher
) {
  this.oAuth2IssuerService = oAuth2IssuerService;
  this.tokenStore = tokenStore;
  this.oAuth2AuthenticationExceptionHandler = oAuth2AuthenticationExceptionHandler;
  this.eventPublisher = eventPublisher;
  this.tokenExtractor = new BearerTokenExtractor();
  this.messageSourceAccessor = messageSourceAccessor;
}
项目:openmrs-module-legacyui    文件:ConceptDatatypeListController.java   
/**
 * The onSubmit function receives the form/command object that was modified by the input form
 * and saves it to the db
 *
 * @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest,*      javax.servlet.http.HttpServletResponse,java.lang.Object,*      org.springframework.validation.BindException)
 */
protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,Object obj,BindException errors) throws Exception {

    HttpSession httpSession = request.getSession();

    String view = getFormView();
    if (Context.isAuthenticated()) {

        String[] cdList = request.getParameterValues("conceptDatatypeId");
        ConceptService cs = Context.getConceptService();

        StringBuilder success = new StringBuilder("");
        StringBuilder error = new StringBuilder();

        MessageSourceAccessor msa = getMessageSourceAccessor();
        String deleted = msa.getMessage("general.deleted");
        String notDeleted = msa.getMessage("general.cannot.delete");
        if (cdList.length != 0) {
            log.warn("Deleting concept datatype is not supported");
            if (!"".equals(error.toString())) {
                error.append("<br/>");
            }
            error.append("ConceptDatatype").append(" ").append(notDeleted);
        }

        view = getSuccessView();
        if (!"".equals(success.toString())) {
            httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR,success.toString());
        }
        if (!"".equals(error.toString())) {
            httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR,error.toString());
        }
    }

    return new ModelAndView(new RedirectView(view));
}
项目:openmrs-module-legacyui    文件:PersonFormController.java   
/**
 * @see org.springframework.web.servlet.mvc.AbstractFormController#processFormSubmission(javax.servlet.http.HttpServletRequest,*      org.springframework.validation.BindException)
 */
protected ModelAndView processFormSubmission(HttpServletRequest request,BindException errors) throws Exception {
    if (!Context.isAuthenticated()) {
        errors.reject("auth.invalid");
    }

    if (errors.hasErrors()) {
        return showForm(request,response,errors);
    }

    Person person = (Person) obj;

    MessageSourceAccessor msa = getMessageSourceAccessor();
    String action = request.getParameter("action");

    if (action.equals(msa.getMessage("Person.save"))) {
        updatePersonAddresses(request,person,errors);

        updatePersonNames(request,person);

        updatePersonAttributes(request,errors,person);
    }

    if (errors.hasErrors()) {
        return showForm(request,errors);
    }

    return super.processFormSubmission(request,errors);
}
项目:openmrs-module-legacyui    文件:ModulePropertiesFormController.java   
@Override
protected Map<String,String> referenceData(HttpServletRequest request) throws Exception {

    Map<String,String> map = new HashMap<String,String>();
    MessageSourceAccessor msa = getMessageSourceAccessor();

    map.put("allowUpload",new String[] { ModuleConstants.RUNTIMEPROPERTY_ALLOW_UPLOAD }));

    return map;
}
项目:openmrs-module-legacyui    文件:SchedulerListController.java   
@SuppressWarnings("unchecked")
@Override
protected Map referenceData(HttpServletRequest request,Object command,Errors errors) throws Exception {

    Map<String,Object>();

    Collection<TaskDeFinition> tasks = (Collection<TaskDeFinition>) command;
    Map<TaskDeFinition,String> intervals = new HashMap<TaskDeFinition,String>();
    MessageSourceAccessor msa = getMessageSourceAccessor();

    for (TaskDeFinition task : tasks) {

        Long interval = task.getRepeatInterval();

        if (interval < 60) {
            intervals.put(task,interval + " " + msa.getMessage("Scheduler.scheduleForm.repeatInterval.units.seconds"));
        } else if (interval < 3600) {
            intervals.put(task,interval / 60 + " "
                    + msa.getMessage("Scheduler.scheduleForm.repeatInterval.units.minutes"));
        } else if (interval < 86400) {
            intervals.put(task,interval / 3600 + " "
                    + msa.getMessage("Scheduler.scheduleForm.repeatInterval.units.hours"));
        } else {
            intervals.put(task,interval / 86400 + " "
                    + msa.getMessage("Scheduler.scheduleForm.repeatInterval.units.days"));
        }
    }
    map.put("intervals",intervals);

    return map;
}
项目:openmrs-module-legacyui    文件:AlertListController.java   
/**
 * The onSubmit function receives the form/command object that was modified by the input form
 * and saves it to the db
 *
 * @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest,BindException errors) throws Exception {

    HttpSession httpSession = request.getSession();

    Locale locale = Context.getLocale();

    if (Context.isAuthenticated()) {
        AlertService as = Context.getAlertService();

        MessageSourceAccessor msa = getMessageSourceAccessor();
        String msg = "";

        // expire the selected alerts
        String[] alertIds = request.getParameterValues("alertId");
        if (alertIds != null) {
            for (String alertIdString : alertIds) {
                Integer alertId = Integer.parseInt(alertIdString);
                Alert a = as.getAlert(alertId);
                a.setDatetoExpire(new Date());
                as.saveAlert(a);
            }

            msg = msa.getMessage("Alert.expired",new Object[] { alertIds.length },locale);
        } else {
            msg = msa.getMessage("Alert.select");
        }

        httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR,msg);
        return new ModelAndView(new RedirectView(getSuccessView()));
    }

    // The user isn't authenticated or their session has expired
    return showForm(request,errors);
}
项目:psi-probe    文件:ListSessionsController.java   
/**
 * Populate search messages.
 *
 * @param searchInfo the search info
 */
private void populateSearchMessages(SessionSearchInfo searchInfo) {
  MessageSourceAccessor msa = getMessageSourceAccessor();

  searchInfo.getErrorMessages().clear();

  if (searchInfo.isEmpty()) {
    searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.empty"));
  } else if (searchInfo.isValid()) {
    searchInfo.setInfoMessage(msa.getMessage("probe.src.sessions.search.results.empty"));
  } else {
    if (!searchInfo.isSessionIdValid()) {
      searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.sessionId",new Object[] {searchInfo.getSessionIdMsg()}));
    }
    if (!searchInfo.isAttrNameValid()) {
      for (String message : searchInfo.getAttrNameMsgs()) {
        searchInfo.addErrorMessage(
            msa.getMessage("probe.src.sessions.search.invalid.attrName",new Object[] {message}));
      }
    }
    if (!searchInfo.isAgeFromValid()) {
      searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageFrom"));
    }
    if (!searchInfo.isAgeTovalid()) {
      searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageto"));
    }
    if (!searchInfo.isIdleTimeFromValid()) {
      searchInfo
          .addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeFrom"));
    }
    if (!searchInfo.isIdleTimeTovalid()) {
      searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeto"));
    }
    if (searchInfo.getErrorMessages().isEmpty()) {
      searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid"));
    }
  }
}
项目:jpublish    文件:SpringI18nSupport.java   
/**
 * Execute the action using the given context.
 *
 * @param context       The current context
 * @param configuration The configuration
 * @throws Exception Any error
 */
public void execute(JPublishContext context,Configuration configuration) throws Exception {
    HttpServletRequest request = (HttpServletRequest) context.get("request");
    HttpServletResponse response = (HttpServletResponse) context.get("response");
    Page page = ((Page) context.get("page"));

    if (page != null) {
        Locale locale = page.getLocale();

        ApplicationContext applicationContext = getApplicationContext(context);
        context.put(SPRING,applicationContext);
        handlerinterceptor localeChangeInterceptor = (handlerinterceptor)
                applicationContext.getBean("localeChangeInterceptor");

        if (localeChangeInterceptor != null) {
            try {
                LocaleResolver localeResolver = (LocaleResolver) applicationContext.getBean("localeResolver");
                if (localeResolver != null) {
                    request.setAttribute(dispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE,localeResolver);
                    localeChangeInterceptor.preHandle(request,null);
                    locale = localeResolver.resolveLocale(request);
                    MessageSource messageSource = (MessageSource) applicationContext.getBean("messageSource");
                    if (messageSource != null) {
                        context.put(I18N,new MessageSourceAccessor(messageSource,locale));
                    } else {
                        log.error("There is no 'messageSource' defined in your application context." +
                                " Please define one.");
                    }
                } else {
                    log.error("please define a 'localeResolver' bean in your Application context");
                }
            } catch (Exception e) {
                e.printstacktrace();
                log.error("Cannot handle the locale change event");
            }
        }
        page.setLocale(locale);
    }
}
项目:spring-struts-forwardport    文件:dispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:spring-struts-forwardport    文件:ActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:spring-struts-forwardport    文件:MappingdispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:spring-struts-forwardport    文件:LookupdispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:grassroot-platform    文件:GroupFetchController.java   
public GroupFetchController(GroupFetchbroker groupFetchbroker,JwtService jwtService,UserManagementService userManagementService,PdfGeneratingService generatingService,MemberDataExportbroker memberDataExportbroker,UrlShortener urlShortener,Groupbroker groupbroker) {
    super(jwtService,userManagementService);
    this.groupFetchbroker = groupFetchbroker;
    this.generatingService = generatingService;
    this.memberDataExportbroker = memberDataExportbroker;
    this.urlShortener = urlShortener;
    this.messageSourceAccessor = messageSourceAccessor;
    this.groupbroker = groupbroker;
}
项目:grassroot-platform    文件:UserController.java   
public UserController(MediaFilebroker mediaFilebroker,Storagebroker storagebroker,UserManagementService userService,PasswordTokenService passwordService,MessagingServicebroker messagingbroker,@Qualifier("messageSourceAccessor") MessageSourceAccessor messageSource) {
    super(jwtService,userService);
    this.mediaFilebroker = mediaFilebroker;
    this.storagebroker = storagebroker;
    this.userService = userService;
    this.passwordService = passwordService;
    this.messagingbroker = messagingbroker;
    this.messageSource = messageSource;
}
项目:grassroot-platform    文件:PermissionDTO.java   
public PermissionDTO(Permission permission,Group group,String roleName,Set<Permission> enabledSet,MessageSourceAccessor messageSourceAccessor) {
    this.permission = permission;
    this.groupUid = group.getUid();
    this.forRole = roleName;
    this.permissionName = permission.getName();
    this.permissionLabel = messageSourceAccessor.getMessage("rest.permission." + permission.getName(),Locale.getDefault());
    this.permissionDesc = messageSourceAccessor.getMessage("rest.permission.desc." + permission.getName(),Locale.getDefault());
    this.permissionEnabled = enabledSet.contains(permission);
    this.position = displayedPermissionsSorted.get(permission);
}
项目:grassroot-platform    文件:LiveWireSendingbrokerImpl.java   
@Autowired
public LiveWireSendingbrokerImpl(LiveWireAlertRepository alertRepository,DataSubscriberRepository subscriberRepository,LiveWirePushbroker liveWirePushbroker,@Qualifier("servicesMessageSourceAccessor") MessageSourceAccessor messageSource,@Qualifier("emailTemplateEngine") TemplateEngine templateEngine,Storagebroker storagebroker) {
    this.alertRepository = alertRepository;
    this.subscriberRepository = subscriberRepository;
    this.liveWirePushbroker = liveWirePushbroker;
    this.messageSource = messageSource;
    this.templateEngine = templateEngine;
    this.storagebroker = storagebroker;
}
项目:springfield    文件:BaseMessageConfiguration.java   
@Bean
public MessageSourceAccessor messageSourceAccessor()  throws Exception{
    MessageSourceAccessor bean = new MessageSourceAccessor(messageSource(),environment.getProperty(
                    "springfield.baseLocale",Locale.class,Locale.KOREA
                )
    );
    return bean;
}
项目:springfield    文件:ContextWebmvcBase.java   
@Bean
public MessageSourceAccessor messageSourceAccessor()  throws Exception{
    MessageSourceAccessor bean = new MessageSourceAccessor(messageSource(),StringUtils.parseLocaleString(configurer.getProperty(Configurer.BASE_LOCALE))
            );
    return bean;
}
项目:class-guard    文件:ServletEndpointSupport.java   
/**
 * Initialize this JAX-RPC servlet endpoint.
 * Calls onInit after successful context initialization.
 * @param context ServletEndpointContext
 * @throws ServiceException if the context is not a ServletEndpointContext
 * @see #onInit
 */
public final void init(Object context) throws ServiceException {
    if (!(context instanceof ServletEndpointContext)) {
        throw new ServiceException("ServletEndpointSupport needs ServletEndpointContext,not [" + context + "]");
    }
    this.servletEndpointContext = (ServletEndpointContext) context;
    ServletContext servletContext = this.servletEndpointContext.getServletContext();
    this.webApplicationContext = WebApplicationContextUtils.getrequiredWebApplicationContext(servletContext);
    this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
    onInit();
}
项目:class-guard    文件:ComponentControllerSupport.java   
/**
 * This implementation delegates to {@code doPerform},* lazy-initializing the application context reference if necessary.
 * <p>This is the preferred execution method in Struts 1.2.
 * When running with Struts 1.1,it will be called by {@code perform}.
 * @see #perform
 * @see #doPerform
 */
@Override
public final void execute(
        ComponentContext componentContext,HttpServletRequest request,ServletContext servletContext)
    throws Exception {

    synchronized (this) {
        if (this.webApplicationContext == null) {
            this.webApplicationContext = RequestContextUtils.getWebApplicationContext(request,servletContext);
            this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        }
    }
    doPerform(componentContext,request,response);
}
项目:class-guard    文件:dispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:class-guard    文件:ActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:class-guard    文件:MappingdispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:class-guard    文件:LookupdispatchActionSupport.java   
/**
 * Initialize the WebApplicationContext for this Action.
 * Invokes onInit after successful initialization of the context.
 * @see #initWebApplicationContext
 * @see #onInit
 */
@Override
public void setServlet(ActionServlet actionServlet) {
    super.setServlet(actionServlet);
    if (actionServlet != null) {
        this.webApplicationContext = initWebApplicationContext(actionServlet);
        this.messageSourceAccessor = new MessageSourceAccessor(this.webApplicationContext);
        onInit();
    }
    else {
        onDestroy();
    }
}
项目:flash-messages    文件:MessageSourceMessageResolverAdapter.java   
/**
 * @param messageSource
 */
public MessageSourceMessageResolverAdapter(MessageSource messageSource) {

    if (messageSource == null) {
        throw new NullPointerException("MessageSource can't be null");
    }
    this.messageSourceAccessor = new MessageSourceAccessor(messageSource);
}
项目:psi-probe-plus    文件:ListSessionsController.java   
private void populateSearchMessages(SessionSearchInfo searchInfo) {
    MessageSourceAccessor msa = getMessageSourceAccessor();

    searchInfo.getErrorMessages().clear();

    if (searchInfo.isEmpty()) {
        searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.empty"));
    } else if (searchInfo.isValid()) {
        searchInfo.setInfoMessage(msa.getMessage("probe.src.sessions.search.results.empty"));
    } else {
        if (!searchInfo.isSessionIdValid()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.sessionId",new Object[] {searchInfo.getSessionIdMsg()}));
        }
        if (!searchInfo.isAttrNameValid()) {
            for (Iterator i = searchInfo.getAttrNameMsgs().iterator(); i.hasNext();) {
                String m = (String) i.next();
                searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.attrName",new Object[] {m}));
            }
        }
        if (!searchInfo.isAgeFromValid()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageFrom"));
        }
        if (!searchInfo.isAgeTovalid()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageto"));
        }
        if (!searchInfo.isIdleTimeFromValid()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeFrom"));
        }
        if (!searchInfo.isIdleTimeTovalid()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeto"));
        }
        if (searchInfo.getErrorMessages().isEmpty()) {
            searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid"));
        }
    }
}
项目:spring-rich-client    文件:EnumComboBoxBinder.java   
protected AbstractListBinding createListBinding(JComponent control,FormModel formModel,String formPropertyPath) {
    ComboBoxBinding binding = (ComboBoxBinding) super.createListBinding(control,formModel,formPropertyPath);
    binding.setSelectableItems(createEnumSelectableItems(formModel,formPropertyPath));
    MessageSourceAccessor messageSourceAccessor = getMessages();
    binding.setRenderer(new EnumListRenderer(messageSourceAccessor));
    binding.setEditor(new EnumComboBoxEditor(messageSourceAccessor,binding.getEditor()));
    return binding;
}
项目:spring-rich-client    文件:BeanTableModel.java   
public void setMessageSource(MessageSource messages) {
    if (messages != null) {
        this.messages = new MessageSourceAccessor(messages);
        createColumnInfo();
    }
    else {
        this.messages = null;
    }
}
项目:spring-rich-client    文件:EnumTableCellRendererTests.java   
public void testGetTableCellRendererComponent() {
    StaticmessageSource messageSource = new StaticmessageSource();
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.ONE","one");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.TWO","two");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.THREE","three");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.FOUR","four");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.FIVE","five");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.SIX","six");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.SEVEN","seven");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.EIGHT","eight");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.NINE","nine");
    messageSource.addMessage("org.springframework.richclient.table.renderer.EnumTableCellRendererTests$Numbers.TEN","ten");
    MessageSourceAccessor msa = new MessageSourceAccessor(messageSource);
    tetcr = new EnumTableCellRenderer(msa);
    Object[][] rowData = { 
            { Numbers.ONE },{ Numbers.TWO },{ Numbers.THREE },{ Numbers.FOUR },{ Numbers.FIVE },{ Numbers.SIX },{ Numbers.SEVEN },{ Numbers.EIGHT },{ Numbers.NINE },{ Numbers.TEN }
            };
    Object[] columnNames = { "Numbers" };
    JTable table = new JTable(rowData,columnNames);
    TableColumnModel tcm = table.getColumnModel();
    tcm.getColumn(0).setCellRenderer(tetcr);
    tetcr.getTableCellRendererComponent(table,Numbers.SEVEN,false,6,0);
    Component component = tetcr.getTableCellRendererComponent(table,0);
    assertTrue(component instanceof EnumTableCellRenderer);
}

关于自定义Spring Boot入门程序:如何将i18n消息贡献给MessageSource?springboot自定义消息转换器的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法、java-假设Spring MessageSource实现是线程安全的吗?、Java——Struts2 之国际化 struts.custom.i18n.resources=globalMessages、org.springframework.context.support.MessageSourceAccessor的实例源码等相关内容,可以在本站寻找。

本文标签: