diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java index 25cf2ae3761d34c7273b420b0efda550f6eaf54d..ed569dda4d8930cb244526d12c95b0bec705de90 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java @@ -70,10 +70,6 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { Object source = context.extractSource(element); context.pushContainingComponent(new CompositeComponentDefinition(element.getTagName(), source)); - RootBeanDefinition compositeResolverBeanDef = new RootBeanDefinition(ViewResolverComposite.class); - compositeResolverBeanDef.setSource(source); - compositeResolverBeanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); - ManagedList resolvers = new ManagedList(4); resolvers.setSource(context.extractSource(element)); String[] names = new String[] {"jsp", "tiles", "bean-name", "freemarker", "velocity", "groovy", "bean", "ref"}; @@ -122,13 +118,19 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { resolvers.add(resolverBeanDef); } - List elementList = DomUtils.getChildElementsByTagName(element, new String[] {"content-negotiation"}); - if (elementList.isEmpty()) { + String beanName = VIEW_RESOLVER_BEAN_NAME; + RootBeanDefinition compositeResolverBeanDef = new RootBeanDefinition(ViewResolverComposite.class); + compositeResolverBeanDef.setSource(source); + compositeResolverBeanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); + + names = new String[] {"content-negotiation"}; + List contentnNegotiationElements = DomUtils.getChildElementsByTagName(element, names); + if (contentnNegotiationElements.isEmpty()) { compositeResolverBeanDef.getPropertyValues().add("order", 0); compositeResolverBeanDef.getPropertyValues().add("viewResolvers", resolvers); } - else if (elementList.size() == 1) { - BeanDefinition beanDef = createContentNegotiatingViewResolver(elementList.get(0), context); + else if (contentnNegotiationElements.size() == 1) { + BeanDefinition beanDef = createContentNegotiatingViewResolver(contentnNegotiationElements.get(0), context); beanDef.getPropertyValues().add("viewResolvers", resolvers); ManagedList list = new ManagedList(1); list.add(beanDef); @@ -136,14 +138,12 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { compositeResolverBeanDef.getPropertyValues().add("order", Ordered.HIGHEST_PRECEDENCE); compositeResolverBeanDef.getPropertyValues().add("viewResolvers", list); } - else if (elementList.size() > 1) { + else if (contentnNegotiationElements.size() > 1) { throw new IllegalArgumentException("Only one element is allowed."); } - String beanName = VIEW_RESOLVER_BEAN_NAME; context.getReaderContext().getRegistry().registerBeanDefinition(beanName, compositeResolverBeanDef); context.registerComponent(new BeanComponentDefinition(compositeResolverBeanDef, beanName)); - context.popAndRegisterContainingComponent(); return null; }