diff --git a/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodResolver.java b/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodResolver.java index fabf192cb3..836e3b5095 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodResolver.java +++ b/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodResolver.java @@ -89,10 +89,12 @@ public class HandlerMethodResolver { (bridgedMethod == specificMethod || !isHandlerMethod(bridgedMethod))) { handlerMethods.add(specificMethod); } - else if (method.isAnnotationPresent(InitBinder.class)) { + else if (isInitBinderMethod(specificMethod) && + (bridgedMethod == specificMethod || !isInitBinderMethod(bridgedMethod))) { initBinderMethods.add(specificMethod); } - else if (method.isAnnotationPresent(ModelAttribute.class)) { + else if (isModelAttributeMethod(specificMethod) && + (bridgedMethod == specificMethod || !isModelAttributeMethod(bridgedMethod))) { modelAttributeMethods.add(specificMethod); } } @@ -111,6 +113,14 @@ public class HandlerMethodResolver { return AnnotationUtils.findAnnotation(method, RequestMapping.class) != null; } + protected boolean isInitBinderMethod(Method method) { + return AnnotationUtils.findAnnotation(method, InitBinder.class) != null; + } + + protected boolean isModelAttributeMethod(Method method) { + return AnnotationUtils.findAnnotation(method, ModelAttribute.class) != null; + } + public final boolean hasHandlerMethods() { return !this.handlerMethods.isEmpty();