Search in sources :

Example 1 with FixedLocaleResolver

use of cn.taketoday.web.i18n.FixedLocaleResolver in project today-framework by TAKETODAY.

the class ViewResolverTests method internalResourceViewResolverWithJstlAndContextParam.

@Test
public void internalResourceViewResolverWithJstlAndContextParam() throws Exception {
    Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH;
    this.sc.addInitParameter(Config.FMT_LOCALIZATION_CONTEXT, "cn/taketoday/web/context/WEB-INF/context-messages");
    this.wac.addMessage("code1", locale, "messageX");
    this.wac.refresh();
    InternalResourceViewResolver vr = new InternalResourceViewResolver();
    vr.setViewClass(JstlView.class);
    vr.setApplicationContext(wac);
    View view = vr.resolveViewName("example1", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example1");
    view = vr.resolveViewName("example2", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example2");
    wac.registerSingleton(LocaleResolver.BEAN_NAME, new FixedLocaleResolver(locale));
    Map<String, Object> model = new HashMap<>();
    TestBean tb = new TestBean();
    model.put("tb", tb);
    view.render(model, this.requestContext);
    assertThat(tb.equals(this.request.getAttribute("tb"))).as("Correct tb attribute").isTrue();
    assertThat(this.request.getAttribute("rc") == null).as("Correct rc attribute").isTrue();
    assertThat(Config.get(this.request, Config.FMT_LOCALE)).isEqualTo(locale);
    LocalizationContext lc = (LocalizationContext) Config.get(this.request, Config.FMT_LOCALIZATION_CONTEXT);
    assertThat(lc.getResourceBundle().getString("code1")).isEqualTo("message1");
    assertThat(lc.getResourceBundle().getString("code2")).isEqualTo("message2");
}
Also used : Locale(java.util.Locale) LocalizationContext(jakarta.servlet.jsp.jstl.fmt.LocalizationContext) HashMap(java.util.HashMap) TestBean(cn.taketoday.beans.testfixture.beans.TestBean) FixedLocaleResolver(cn.taketoday.web.i18n.FixedLocaleResolver) JstlView(cn.taketoday.web.servlet.view.JstlView) InternalResourceView(cn.taketoday.web.servlet.view.InternalResourceView) InternalResourceViewResolver(cn.taketoday.web.servlet.view.InternalResourceViewResolver) Test(org.junit.jupiter.api.Test)

Example 2 with FixedLocaleResolver

use of cn.taketoday.web.i18n.FixedLocaleResolver in project today-framework by TAKETODAY.

the class ViewResolverTests method internalResourceViewResolverWithJstl.

@Test
public void internalResourceViewResolverWithJstl() throws Exception {
    Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH;
    this.wac.addMessage("code1", locale, "messageX");
    this.wac.refresh();
    InternalResourceViewResolver vr = new InternalResourceViewResolver();
    vr.setViewClass(JstlView.class);
    vr.setApplicationContext(this.wac);
    View view = vr.resolveViewName("example1", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example1");
    view = vr.resolveViewName("example2", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example2");
    this.wac.registerSingleton(LocaleResolver.BEAN_NAME, new FixedLocaleResolver(locale));
    Map<String, Object> model = new HashMap<>();
    TestBean tb = new TestBean();
    model.put("tb", tb);
    view.render(model, this.requestContext);
    assertThat(tb.equals(this.request.getAttribute("tb"))).as("Correct tb attribute").isTrue();
    assertThat(this.request.getAttribute("rc") == null).as("Correct rc attribute").isTrue();
    assertThat(Config.get(this.request, Config.FMT_LOCALE)).isEqualTo(locale);
    LocalizationContext lc = (LocalizationContext) Config.get(this.request, Config.FMT_LOCALIZATION_CONTEXT);
    assertThat(lc.getResourceBundle().getString("code1")).isEqualTo("messageX");
}
Also used : Locale(java.util.Locale) LocalizationContext(jakarta.servlet.jsp.jstl.fmt.LocalizationContext) HashMap(java.util.HashMap) TestBean(cn.taketoday.beans.testfixture.beans.TestBean) FixedLocaleResolver(cn.taketoday.web.i18n.FixedLocaleResolver) JstlView(cn.taketoday.web.servlet.view.JstlView) InternalResourceView(cn.taketoday.web.servlet.view.InternalResourceView) InternalResourceViewResolver(cn.taketoday.web.servlet.view.InternalResourceViewResolver) Test(org.junit.jupiter.api.Test)

Example 3 with FixedLocaleResolver

use of cn.taketoday.web.i18n.FixedLocaleResolver in project today-framework by TAKETODAY.

the class WebMvcAutoConfiguration method localeResolver.

@Component
@ConditionalOnMissingBean(name = LocaleResolver.BEAN_NAME)
public LocaleResolver localeResolver() {
    if (this.webProperties.getLocaleResolver() == WebProperties.LocaleResolver.FIXED) {
        return new FixedLocaleResolver(this.webProperties.getLocale());
    }
    AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
    localeResolver.setDefaultLocale(this.webProperties.getLocale());
    return localeResolver;
}
Also used : FixedLocaleResolver(cn.taketoday.web.i18n.FixedLocaleResolver) AcceptHeaderLocaleResolver(cn.taketoday.web.i18n.AcceptHeaderLocaleResolver) ConditionalOnMissingBean(cn.taketoday.context.condition.ConditionalOnMissingBean) Component(cn.taketoday.lang.Component)

Example 4 with FixedLocaleResolver

use of cn.taketoday.web.i18n.FixedLocaleResolver in project today-infrastructure by TAKETODAY.

the class WebMvcAutoConfiguration method localeResolver.

@Component
@ConditionalOnMissingBean(name = LocaleResolver.BEAN_NAME)
public LocaleResolver localeResolver() {
    if (this.webProperties.getLocaleResolver() == WebProperties.LocaleResolver.FIXED) {
        return new FixedLocaleResolver(this.webProperties.getLocale());
    }
    AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
    localeResolver.setDefaultLocale(this.webProperties.getLocale());
    return localeResolver;
}
Also used : FixedLocaleResolver(cn.taketoday.web.i18n.FixedLocaleResolver) AcceptHeaderLocaleResolver(cn.taketoday.web.i18n.AcceptHeaderLocaleResolver) ConditionalOnMissingBean(cn.taketoday.context.condition.ConditionalOnMissingBean) Component(cn.taketoday.lang.Component)

Example 5 with FixedLocaleResolver

use of cn.taketoday.web.i18n.FixedLocaleResolver in project today-infrastructure by TAKETODAY.

the class ViewResolverTests method internalResourceViewResolverWithJstlAndContextParam.

@Test
public void internalResourceViewResolverWithJstlAndContextParam() throws Exception {
    Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH;
    this.sc.addInitParameter(Config.FMT_LOCALIZATION_CONTEXT, "cn/taketoday/web/context/WEB-INF/context-messages");
    this.wac.addMessage("code1", locale, "messageX");
    this.wac.refresh();
    InternalResourceViewResolver vr = new InternalResourceViewResolver();
    vr.setViewClass(JstlView.class);
    vr.setApplicationContext(wac);
    View view = vr.resolveViewName("example1", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example1");
    view = vr.resolveViewName("example2", Locale.getDefault());
    assertThat(view).isInstanceOf(JstlView.class);
    assertThat(((JstlView) view).getUrl()).as("Correct URL").isEqualTo("example2");
    wac.registerSingleton(LocaleResolver.BEAN_NAME, new FixedLocaleResolver(locale));
    Map<String, Object> model = new HashMap<>();
    TestBean tb = new TestBean();
    model.put("tb", tb);
    view.render(model, this.requestContext);
    assertThat(tb.equals(this.request.getAttribute("tb"))).as("Correct tb attribute").isTrue();
    assertThat(this.request.getAttribute("rc") == null).as("Correct rc attribute").isTrue();
    assertThat(Config.get(this.request, Config.FMT_LOCALE)).isEqualTo(locale);
    LocalizationContext lc = (LocalizationContext) Config.get(this.request, Config.FMT_LOCALIZATION_CONTEXT);
    assertThat(lc.getResourceBundle().getString("code1")).isEqualTo("message1");
    assertThat(lc.getResourceBundle().getString("code2")).isEqualTo("message2");
}
Also used : Locale(java.util.Locale) LocalizationContext(jakarta.servlet.jsp.jstl.fmt.LocalizationContext) HashMap(java.util.HashMap) TestBean(cn.taketoday.beans.testfixture.beans.TestBean) FixedLocaleResolver(cn.taketoday.web.i18n.FixedLocaleResolver) JstlView(cn.taketoday.web.servlet.view.JstlView) InternalResourceView(cn.taketoday.web.servlet.view.InternalResourceView) InternalResourceViewResolver(cn.taketoday.web.servlet.view.InternalResourceViewResolver) Test(org.junit.jupiter.api.Test)

Aggregations

FixedLocaleResolver (cn.taketoday.web.i18n.FixedLocaleResolver)6 TestBean (cn.taketoday.beans.testfixture.beans.TestBean)4 InternalResourceView (cn.taketoday.web.servlet.view.InternalResourceView)4 InternalResourceViewResolver (cn.taketoday.web.servlet.view.InternalResourceViewResolver)4 JstlView (cn.taketoday.web.servlet.view.JstlView)4 LocalizationContext (jakarta.servlet.jsp.jstl.fmt.LocalizationContext)4 HashMap (java.util.HashMap)4 Locale (java.util.Locale)4 Test (org.junit.jupiter.api.Test)4 ConditionalOnMissingBean (cn.taketoday.context.condition.ConditionalOnMissingBean)2 Component (cn.taketoday.lang.Component)2 AcceptHeaderLocaleResolver (cn.taketoday.web.i18n.AcceptHeaderLocaleResolver)2