Following construct doesn't work in a Controller.
Superclass:
@RequestMapping(params = "action=edit", method = RequestMethod.GET)
public String delete(@RequestParam("id") ID id) {...}
Subclass:
@Override
public String delete(@RequestParam("id") Integer id) {...}
ID extends Serialiazable.
The HandlerMethodResolver resolved the method Subclass.delete(Serializable).
This is incorrect: it should get the bridged method Subclass.delete(Integer), so it can resolve the @RequestParam annotations.
I think this wil be fixed if BridgeMethodResolver.findBridgedMethod(method) is called after using ClassUtils.getMostSpecificMethod().
Thanks for reporting this! We indeed need to apply BridgeMethodResolver here - after resolution of the handler method (which still happens based on the @RequestMapping annotation on the superclass method) but before invocation of the method (which requires resolution of annotated parameters).
Juergen