/** * Register a bean name view resolver that interprets view names as the names * of {@link org.springframework.web.servlet.View} beans. */ public void beanName() { BeanNameViewResolver resolver = new BeanNameViewResolver(); this.viewResolvers.add(resolver); }
@Override @Nullable public View resolveViewName(String viewName, Locale locale) throws BeansException { ApplicationContext context = obtainApplicationContext(); if (!context.containsBean(viewName)) { // Allow for ViewResolver chaining... return null; } if (!context.isTypeMatch(viewName, View.class)) { if (logger.isDebugEnabled()) { logger.debug("Found bean named '" + viewName + "' but it does not implement View"); } // Since we're looking into the general ApplicationContext here, // let's accept this as a non-match and allow for chaining as well... return null; } return context.getBean(viewName, View.class); }
@Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = "spring.social", name = "auto-connection-views") public BeanNameViewResolver beanNameViewResolver() { BeanNameViewResolver viewResolver = new BeanNameViewResolver(); viewResolver.setOrder(Ordered.HIGHEST_PRECEDENCE); return viewResolver; }
@Test public void testBeanNameViewResolver() throws ServletException { StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(new MockServletContext()); MutablePropertyValues pvs1 = new MutablePropertyValues(); pvs1.addPropertyValue(new PropertyValue("url", "/example1.jsp")); wac.registerSingleton("example1", InternalResourceView.class, pvs1); MutablePropertyValues pvs2 = new MutablePropertyValues(); pvs2.addPropertyValue(new PropertyValue("url", "/example2.jsp")); wac.registerSingleton("example2", JstlView.class, pvs2); BeanNameViewResolver vr = new BeanNameViewResolver(); vr.setApplicationContext(wac); wac.refresh(); View view = vr.resolveViewName("example1", Locale.getDefault()); assertEquals("Correct view class", InternalResourceView.class, view.getClass()); assertEquals("Correct URL", "/example1.jsp", ((InternalResourceView) view).getUrl()); view = vr.resolveViewName("example2", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "/example2.jsp", ((JstlView) view).getUrl()); }
@Autowired(required = false) public void configBeanNameViewResolver(BeanNameViewResolver resolver) { Optional.ofNullable(resolver).ifPresent(it -> { resolver.setOrder(Ordered.HIGHEST_PRECEDENCE); }); }
@Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = "spring.social", name = "auto-connection-views") public BeanNameViewResolver beanNameViewResolver() { BeanNameViewResolver viewResolver = new BeanNameViewResolver(); viewResolver.setOrder(Ordered.HIGHEST_PRECEDENCE); return viewResolver; }
/** * Register a bean name view resolver that interprets view names as the names * of {@link org.springframework.web.servlet.View} beans. */ public void beanName() { BeanNameViewResolver resolver = new BeanNameViewResolver(); this.viewResolvers.add(resolver); }
@Override @Nullable public View resolveViewName(String viewName, Locale locale) throws BeansException { ApplicationContext context = obtainApplicationContext(); if (!context.containsBean(viewName)) { // Allow for ViewResolver chaining... return null; } if (!context.isTypeMatch(viewName, View.class)) { if (logger.isDebugEnabled()) { logger.debug("Found bean named '" + viewName + "' but it does not implement View"); } // Since we're looking into the general ApplicationContext here, // let's accept this as a non-match and allow for chaining as well... return null; } return context.getBean(viewName, View.class); }
@Bean public ViewResolver beanNameViewResolver() { return new BeanNameViewResolver(); } }
@Bean public org.springframework.web.servlet.view.ContentNegotiatingViewResolver viewResolver(ApplicationContext context, ContentNegotiationManager contentNegotiationManager) { ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver(); ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setCharacterEncoding(StandardCharsets.UTF_8.toString()); viewResolver.setTemplateEngine(webTemplateEngine(context)); ForwardAwareInternalResourceViewResolver forwardAwareInternalResourceViewResolver = new ForwardAwareInternalResourceViewResolver(); BeanNameViewResolver beanNameViewResolver = new BeanNameViewResolver(); resolver.setViewResolvers(Arrays.asList(viewResolver, forwardAwareInternalResourceViewResolver, beanNameViewResolver)); MappingJackson2JsonView jackson2JsonView = new MappingJackson2JsonView(); jackson2JsonView.setExtractValueFromSingleKeyModel(true); resolver.setDefaultViews(Arrays.asList(jackson2JsonView)); resolver.setContentNegotiationManager(contentNegotiationManager); return resolver; }
/** * For RSS Feeds */ @Bean public ViewResolver configureViewResolver() { return new BeanNameViewResolver(); } }
/** * Register a bean name view resolver that interprets view names as the names * of {@link org.springframework.web.servlet.View} beans. */ public void beanName() { BeanNameViewResolver resolver = new BeanNameViewResolver(); this.viewResolvers.add(resolver); }
@Bean public ContentNegotiatingViewResolver contentNegotiatingViewResolver() { ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver(); Map<String, String> mediaTypes = new HashMap<String, String>(); mediaTypes.put("xml", "application/xml"); resolver.setMediaTypes(mediaTypes); List<ViewResolver> viewResolvers = new ArrayList<ViewResolver>(); viewResolvers.add(new BeanNameViewResolver()); resolver.setViewResolvers(viewResolvers); return resolver; }
return new BeanNameViewResolver();