@Test public void testInternalResourceViewResolverWithJstl() throws Exception { Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH; MockServletContext sc = new MockServletContext(); StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(sc); wac.addMessage("code1", locale, "messageX"); wac.refresh(); InternalResourceViewResolver vr = new InternalResourceViewResolver(); vr.setViewClass(JstlView.class); vr.setApplicationContext(wac); View view = vr.resolveViewName("example1", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example1", ((JstlView) view).getUrl()); view = vr.resolveViewName("example2", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example2", ((JstlView) view).getUrl()); MockHttpServletRequest request = new MockHttpServletRequest(sc); HttpServletResponse response = new MockHttpServletResponse(); request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(locale)); Map model = new HashMap(); TestBean tb = new TestBean(); model.put("tb", tb); view.render(model, request, response); assertTrue("Correct tb attribute", tb.equals(request.getAttribute("tb"))); assertTrue("Correct rc attribute", request.getAttribute("rc") == null); assertEquals(locale, Config.get(request, Config.FMT_LOCALE)); LocalizationContext lc = (LocalizationContext) Config.get(request, Config.FMT_LOCALIZATION_CONTEXT); assertEquals("messageX", lc.getResourceBundle().getString("code1")); }
@Test public void testInternalResourceViewResolverWithJstlAndContextParam() throws Exception { Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH; MockServletContext sc = new MockServletContext(); sc.addInitParameter(Config.FMT_LOCALIZATION_CONTEXT, "org/springframework/web/context/WEB-INF/context-messages"); StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(sc); wac.addMessage("code1", locale, "messageX"); wac.refresh(); InternalResourceViewResolver vr = new InternalResourceViewResolver(); vr.setViewClass(JstlView.class); vr.setApplicationContext(wac); View view = vr.resolveViewName("example1", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example1", ((JstlView) view).getUrl()); view = vr.resolveViewName("example2", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example2", ((JstlView) view).getUrl()); MockHttpServletRequest request = new MockHttpServletRequest(sc); HttpServletResponse response = new MockHttpServletResponse(); request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(locale)); Map model = new HashMap(); TestBean tb = new TestBean(); model.put("tb", tb); view.render(model, request, response); assertTrue("Correct tb attribute", tb.equals(request.getAttribute("tb"))); assertTrue("Correct rc attribute", request.getAttribute("rc") == null); assertEquals(locale, Config.get(request, Config.FMT_LOCALE)); LocalizationContext lc = (LocalizationContext) Config.get(request, Config.FMT_LOCALIZATION_CONTEXT); assertEquals("message1", lc.getResourceBundle().getString("code1")); assertEquals("message2", lc.getResourceBundle().getString("code2")); }
@Test public void localeFromResolver() throws Exception { Locale locale = Locale.ENGLISH; servletRequest.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(locale)); MethodParameter localeParameter = new MethodParameter(method, 4); assertTrue("Locale not supported", resolver.supportsParameter(localeParameter)); Object result = resolver.resolveArgument(localeParameter, null, webRequest, null); assertSame("Invalid result", locale, result); }
@Test public void timeZoneFromResolver() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles"); servletRequest.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(Locale.US, timeZone)); MethodParameter timeZoneParameter = new MethodParameter(method, 8); assertTrue("TimeZone not supported", resolver.supportsParameter(timeZoneParameter)); Object result = resolver.resolveArgument(timeZoneParameter, null, webRequest, null); assertEquals("Invalid result", timeZone, result); }
@Test public void zoneIdFromResolver() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("America/New_York"); servletRequest.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(Locale.US, timeZone)); MethodParameter zoneIdParameter = new MethodParameter(method, 9); assertTrue("ZoneId not supported", resolver.supportsParameter(zoneIdParameter)); Object result = resolver.resolveArgument(zoneIdParameter, null, webRequest, null); assertEquals("Invalid result", timeZone.toZoneId(), result); }
@Test public void overrideLocale() throws Exception { load(AllResources.class, "spring.mvc.locale:en_UK", "spring.mvc.locale-resolver=fixed"); // mock request and set user preferred locale MockHttpServletRequest request = new MockHttpServletRequest(); request.addPreferredLocale(StringUtils.parseLocaleString("nl_NL")); request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "nl_NL"); LocaleResolver localeResolver = this.context.getBean(LocaleResolver.class); assertThat(localeResolver).isInstanceOf(FixedLocaleResolver.class); Locale locale = localeResolver.resolveLocale(request); // test locale resolver uses fixed locale and not user preferred locale assertThat(locale.toString()).isEqualTo("en_UK"); }
@Test public void overrideLocale() throws Exception { load(AllResources.class, "spring.mvc.locale:en_UK"); // mock request and set user preferred locale MockHttpServletRequest request = new MockHttpServletRequest(); request.addPreferredLocale(StringUtils.parseLocaleString("nl_NL")); LocaleResolver localeResolver = this.context.getBean(LocaleResolver.class); Locale locale = localeResolver.resolveLocale(request); assertThat(localeResolver).isInstanceOf(FixedLocaleResolver.class); // test locale resolver uses fixed locale and not user preferred locale assertThat(locale.toString()).isEqualTo("en_UK"); }
@Test public void overrideLocale() throws Exception { load(AllResources.class, "spring.mvc.locale:en_UK"); // mock request and set user preferred locale MockHttpServletRequest request = new MockHttpServletRequest(); request.addPreferredLocale(StringUtils.parseLocaleString("nl_NL")); LocaleResolver localeResolver = this.context.getBean(LocaleResolver.class); Locale locale = localeResolver.resolveLocale(request); assertThat(localeResolver, instanceOf(FixedLocaleResolver.class)); // test locale resolver uses fixed locale and not user preferred locale assertThat(locale.toString(), equalTo("en_UK")); }
@Test public void tilesJstlView() throws Exception { Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH; StaticWebApplicationContext wac = prepareWebApplicationContext(); InternalResourceViewResolver irvr = new InternalResourceViewResolver(); irvr.setApplicationContext(wac); irvr.setViewClass(TilesJstlView.class); View view = irvr.resolveViewName("testTile", new Locale("nl", "")); MockHttpServletRequest request = new MockHttpServletRequest(wac.getServletContext()); MockHttpServletResponse response = new MockHttpServletResponse(); request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(locale)); wac.addMessage("code1", locale, "messageX"); view.render(new HashMap<String, Object>(), request, response); assertEquals("/WEB-INF/jsp/layout.jsp", response.getForwardedUrl()); ComponentContext cc = (ComponentContext) request.getAttribute(ComponentConstants.COMPONENT_CONTEXT); assertNotNull(cc); PathAttribute attr = (PathAttribute) cc.getAttribute("content"); assertEquals("/WEB-INF/jsp/content.jsp", attr.getValue()); assertEquals(locale, Config.get(request, Config.FMT_LOCALE)); LocalizationContext lc = (LocalizationContext) Config.get(request, Config.FMT_LOCALIZATION_CONTEXT); assertEquals("messageX", lc.getResourceBundle().getString("code1")); }
@Test public void tilesJstlViewWithContextParam() throws Exception { Locale locale = !Locale.GERMAN.equals(Locale.getDefault()) ? Locale.GERMAN : Locale.FRENCH; StaticWebApplicationContext wac = prepareWebApplicationContext(); ((MockServletContext) wac.getServletContext()).addInitParameter( Config.FMT_LOCALIZATION_CONTEXT, "org/springframework/web/servlet/view/tiles/context-messages"); InternalResourceViewResolver irvr = new InternalResourceViewResolver(); irvr.setApplicationContext(wac); irvr.setViewClass(TilesJstlView.class); View view = irvr.resolveViewName("testTile", new Locale("nl", "")); MockHttpServletRequest request = new MockHttpServletRequest(wac.getServletContext()); MockHttpServletResponse response = new MockHttpServletResponse(); wac.addMessage("code1", locale, "messageX"); request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new FixedLocaleResolver(locale)); view.render(new HashMap<String, Object>(), request, response); assertEquals("/WEB-INF/jsp/layout.jsp", response.getForwardedUrl()); ComponentContext cc = (ComponentContext) request.getAttribute(ComponentConstants.COMPONENT_CONTEXT); assertNotNull(cc); PathAttribute attr = (PathAttribute) cc.getAttribute("content"); assertEquals("/WEB-INF/jsp/content.jsp", attr.getValue()); LocalizationContext lc = (LocalizationContext) Config.get(request, Config.FMT_LOCALIZATION_CONTEXT); assertEquals("message1", lc.getResourceBundle().getString("code1")); assertEquals("message2", lc.getResourceBundle().getString("code2")); }
@Bean public LocaleResolver localeResolver() { return new FixedLocaleResolver(Locale.ENGLISH); }
@Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = "spring.mvc", name = "locale") public LocaleResolver localeResolver() { return new FixedLocaleResolver(this.mvcProperties.getLocale()); }
@Bean public LocaleResolver localeResolver() { return new FixedLocaleResolver(new Locale("pt", "BR")); }
@Bean public Filter localeSettingFilter() { LocaleSettingFilter filter = new LocaleSettingFilter(); filter.setLocaleResolver(new FixedLocaleResolver(Locale.ENGLISH)); return filter; }
@Bean public LocaleResolver localeResolver() { return new FixedLocaleResolver(new Locale("pl")); }
@Bean public FixedLocaleResolver fixedLocaleResolver() { FixedLocaleResolver resolver = new FixedLocaleResolver(); resolver.setDefaultLocale(Locale.CHINA); return resolver; }