On 07/12/17 15:00, Mark Thomas wrote: > On 07/12/17 02:52, Nitkalya (Ing) Wiriyanuparb wrote: >> Hello. >> >> I'm upgrading from Tomcat 7.0.30 to 8.5.24. Everything is working fine, but >> I notice that BeanELResolver behaves differently when calling a bean >> varargs method with no argument. >> >> My action bean has a method with the signature "public String >> getIncludes(final String... moduleNames)". I'm calling it on one of my JSP >> pages like "${actionBean.getIncludes()}", but got MethodNotFoundException. >> Calling it with some arguments or an empty array would work – as one would >> expect. Please see the stacktrace below. >> >> This method call used to be okay in 7.0.30. I've tried to find something in >> the EL and JSP specifications around varargs, but couldn't find anything >> concrete. I got the impression that it's not officially supported in the >> specs, but Tomcat supports it. >> >> I'm treating it as a bug as I've already created a patch for it – see >> below. However, I'm new to this mailing list so I thought I would ask first. >> >> Is this a bug? > > It looks like it, yes. > > Thanks for the patch. Note it is usually best to attach patches to a > Bugzilla issue as that prevents them from getting mangled by e-mail clients. > > I'll take a closer look at this now.
Thanks again for reporting the issue and providing a patch. I've applied your patch with a few changes and additions. The provided test cases highlighted the complexity of matching varargs methods, particularly because of the coercion rules that apply in EL. I expanded the tests significantly to try and cover all the edge cases. I extended the proposed patch to cover those edge cases as well. The changes will are in: - trunk for 9.0.3 onwards - 8.5.x for 8.5.25 onwards - 8.0.x for 8.0.49 onwards Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org