@Test public void testCacheRemoval() throws Exception { StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(new MockServletContext()); wac.refresh(); InternalResourceViewResolver vr = new InternalResourceViewResolver(); vr.setViewClass(JstlView.class); vr.setApplicationContext(wac); View view = vr.resolveViewName("example1", Locale.getDefault()); View cached = vr.resolveViewName("example1", Locale.getDefault()); if (view != cached) { fail("Caching doesn't work"); } vr.removeFromCache("example1", Locale.getDefault()); cached = vr.resolveViewName("example1", Locale.getDefault()); if (view == cached) { // the chance of having the same reference (hashCode) twice if negligible). fail("View wasn't removed from cache"); } }
vr.setApplicationContext(wac); View view = vr.resolveViewName("example1", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example1", ((InternalResourceView) view).getUrl()); assertEquals(new Integer(2), attributes.get("key2")); view = vr.resolveViewName("example2", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "example2", ((InternalResourceView) view).getUrl());
request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new AcceptHeaderLocaleResolver()); View view = vr.resolveViewName("example1", Locale.getDefault()); view.render(new HashMap<String, Object>(), request, response);
request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new AcceptHeaderLocaleResolver()); View view = vr.resolveViewName("example1", Locale.getDefault()); view.render(new HashMap<String, Object>(), request, response);
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());
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());
public View resolveViewName(String viewName, Locale locale) throws Exception { if (!viewName.startsWith("/")) { viewName = "/" + viewName; } if (viewName.endsWith(getSuffix())) { viewName = viewName.substring(0, viewName.length() - getSuffix().length()); } String path = getPrefix() + viewName + getSuffix(); if (path.startsWith("/META-INF")) { path = path.substring(1); } URL url = getClass().getClassLoader().getResource(path); if (url != null) { return super.resolveViewName(viewName, locale); } return null; }
public View resolveViewName(String viewName, Locale locale) throws Exception { if (!viewName.startsWith("/")) { viewName = "/" + viewName; } if (viewName.endsWith(getSuffix())) { viewName = viewName.substring(0, viewName.length() - getSuffix().length()); } String path = getPrefix() + viewName + getSuffix(); if (path.startsWith("/META-INF")) { path = path.substring(1); } URL url = getClass().getClassLoader().getResource(path); if (url != null) { return super.resolveViewName(viewName, locale); } return null; }