/** * Register JSP view resolver using a default view name prefix of "/WEB-INF/" * and a default suffix of ".jsp". * <p>When this method is invoked more than once, each call will register a * new ViewResolver instance. Note that since it's not easy to determine * if a JSP exists without forwarding to it, using multiple JSP-based view * resolvers only makes sense in combination with the "viewNames" property * on the resolver indicating which view names are handled by which resolver. */ public UrlBasedViewResolverRegistration jsp() { return jsp("/WEB-INF/", ".jsp"); }
@Test public void customViewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/", ".jsp"); this.registry.viewResolver(viewResolver); assertSame(viewResolver, this.registry.getViewResolvers().get(0)); }
ViewResolverRegistry registry = new ViewResolverRegistry( mvcContentNegotiationManager(), this.applicationContext); configureViewResolvers(registry); if (registry.getViewResolvers().isEmpty() && this.applicationContext != null) { String[] names = BeanFactoryUtils.beanNamesForTypeIncludingAncestors( this.applicationContext, ViewResolver.class, true, false); if (names.length == 1) { registry.getViewResolvers().add(new InternalResourceViewResolver()); composite.setOrder(registry.getOrder()); composite.setViewResolvers(registry.getViewResolvers()); if (this.applicationContext != null) { composite.setApplicationContext(this.applicationContext);
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.enableContentNegotiation(new MappingJackson2JsonView()); registry.jsp("/", ".jsp"); }
@Test public void jspMultipleResolvers() { this.registry.jsp().viewNames("view1", "view2"); this.registry.jsp().viewNames("view3", "view4"); assertNotNull(this.registry.getViewResolvers()); assertEquals(2, this.registry.getViewResolvers().size()); assertEquals(InternalResourceViewResolver.class, this.registry.getViewResolvers().get(0).getClass()); assertEquals(InternalResourceViewResolver.class, this.registry.getViewResolvers().get(1).getClass()); }
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.viewResolver(htmlViewResolver); registry.viewResolver(redirectViewResolver()); registry.viewResolver(forwardViewResolver()); }
@Override protected void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp(); registry.freeMarker(); }
/** * Register Tiles 3.x view resolver. * <p><strong>Note</strong> that you must also configure Tiles by adding a * {@link org.springframework.web.servlet.view.tiles3.TilesConfigurer} bean. */ public UrlBasedViewResolverRegistration tiles() { if (!checkBeanOfType(TilesConfigurer.class)) { throw new BeanInitializationException("In addition to a Tiles view resolver " + "there must also be a single TilesConfigurer bean in this web application context " + "(or its parent)."); } TilesRegistration registration = new TilesRegistration(); this.viewResolvers.add(registration.getViewResolver()); return registration; }
@Test public void order() { assertEquals(Ordered.LOWEST_PRECEDENCE, this.registry.getOrder()); this.registry.enableContentNegotiation(); assertEquals(Ordered.HIGHEST_PRECEDENCE, this.registry.getOrder()); }
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.enableContentNegotiation(new FastJsonJsonView()); if (context.containsBean("thymeleafViewResolver")) { registry.viewResolver(context.getBean("thymeleafViewResolver", ThymeleafViewResolver.class)); } if (context.containsBean("freeMarkerViewResolver")) { registry.viewResolver(freeMarkerViewResolver()); } /*if(context.getBeanNamesForType(FreeMarkerConfigurer.class).length>0){ registry.viewResolver(freeMarkerViewResolver()); }*/ registry.viewResolver(jspViewResolver()); }
ViewResolverRegistry registry = new ViewResolverRegistry( mvcContentNegotiationManager(), this.applicationContext); configureViewResolvers(registry); composite.setOrder(registry.getOrder()); composite.setViewResolvers(registry.getViewResolvers()); composite.setApplicationContext(this.applicationContext);
/** * Enable use of a {@link ContentNegotiatingViewResolver} to front all other * configured view resolvers and select among all selected Views based on * media types requested by the client (e.g. in the Accept header). * <p>If invoked multiple times the provided default views will be added to * any other default views that may have been configured already. * @see ContentNegotiatingViewResolver#setDefaultViews */ public void enableContentNegotiation(View... defaultViews) { initContentNegotiatingViewResolver(defaultViews); }
@Test public void hasRegistrationsWhenContentNegotiationEnabled() { assertFalse(this.registry.hasRegistrations()); this.registry.enableContentNegotiation(); assertTrue(this.registry.hasRegistrations()); }
@Test public void beanName() { this.registry.beanName(); assertEquals(1, this.registry.getViewResolvers().size()); assertEquals(BeanNameViewResolver.class, registry.getViewResolvers().get(0).getClass()); }
@Test public void noResolvers() { assertNotNull(this.registry.getViewResolvers()); assertEquals(0, this.registry.getViewResolvers().size()); assertFalse(this.registry.hasRegistrations()); }
@Before public void setup() { StaticWebApplicationContext context = new StaticWebApplicationContext(); context.registerSingleton("freeMarkerConfigurer", FreeMarkerConfigurer.class); context.registerSingleton("tilesConfigurer", TilesConfigurer.class); context.registerSingleton("groovyMarkupConfigurer", GroovyMarkupConfigurer.class); context.registerSingleton("scriptTemplateConfigurer", ScriptTemplateConfigurer.class); this.registry = new ViewResolverRegistry(new ContentNegotiationManager(), context); }
@SuppressWarnings("unchecked") private <T extends ViewResolver> T checkAndGetResolver(Class<T> resolverType) { assertNotNull(this.registry.getViewResolvers()); assertEquals(1, this.registry.getViewResolvers().size()); assertEquals(resolverType, this.registry.getViewResolvers().get(0).getClass()); return (T) registry.getViewResolvers().get(0); }
@Test public void contentNegotiationAddsDefaultViewRegistrations() { MappingJackson2JsonView view1 = new MappingJackson2JsonView(); this.registry.enableContentNegotiation(view1); ContentNegotiatingViewResolver resolver1 = checkAndGetResolver(ContentNegotiatingViewResolver.class); assertEquals(Arrays.asList(view1), resolver1.getDefaultViews()); MarshallingView view2 = new MarshallingView(); this.registry.enableContentNegotiation(view2); ContentNegotiatingViewResolver resolver2 = checkAndGetResolver(ContentNegotiatingViewResolver.class); assertEquals(Arrays.asList(view1, view2), resolver2.getDefaultViews()); assertSame(resolver1, resolver2); }
/** mvc:view-resolvers> <mvc:content-negotiation> <mvc:default-views> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/> </mvc:default-views> </mvc:content-negotiation> <mvc:jsp/> </mvc:view-resolvers> * @param registry */ @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.enableContentNegotiation(new MappingJackson2JsonView()); registry.jsp(); }