-
Notifications
You must be signed in to change notification settings - Fork 38.6k
Description
Robert Kristofic opened SPR-5935 and commented
If you have @Controller
marked class which implements Comparator.
Exception:
javax.servlet.ServletException: No adapter for handler
[plaut.jfos.module.dashboard.web.controller.PartnerDetailController@2f1f479a]:
Does your handler implement a supported interface like Controller?
org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter
(DispatcherServlet.java:1091)
org.springframework.web.servlet.DispatcherServlet.doDispatch
(DispatcherServlet.java:874)
org.springframework.web.servlet.DispatcherServlet.doService
(DispatcherServlet.java:809)
org.springframework.web.servlet.FrameworkServlet.processRequest
(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost
(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal
(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:76)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
org.springframework.security.ui.logout.LogoutFilter.doFilterHttp
(LogoutFilter.java:89)
org.springframework.security.ui.SpringSecurityFilter.doFilter
(SpringSecurityFilter.java:53)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp
(AbstractProcessingFilter.java:271)
org.springframework.security.ui.SpringSecurityFilter.doFilter
(SpringSecurityFilter.java:53)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
org.springframework.security.ui.x509.X509ProcessingFilter.doFilter
(X509ProcessingFilter.java:137)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
plaut.jfos.framework.server.JfosContextOUSetterFilter.doFilter
(JfosContextOUSetterFilter.java:59)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp
(HttpSessionContextIntegrationFilter.java:235)
org.springframework.security.ui.SpringSecurityFilter.doFilter
(SpringSecurityFilter.java:53)
org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
org.springframework.security.util.FilterChainProxy.doFilter
(FilterChainProxy.java:174)
org.springframework.security.util.FilterToBeanProxy.doFilter
(FilterToBeanProxy.java:99)
Controller code (not complete):
@Controller
public class PartnerDetailController extends AbstractDashboardController implements Comparator<OrganizationUnit> {
//....
@RequestMapping(value = "/dashboard/partnerdetail.do")
public String process(@ModelAttribute("formData") PartnerDetailForm formData, HttpSession session) {
formData.setOrganizationUnits(Collections.sort(codeListService.getOrganizationUnits(), this));
return "/dashboard/partnerdetail.jsp";
}
// ....
@Override
public int compare(OrganizationUnit o1, OrganizationUnit o2) {
if(o1 == null || o1.getLabel() == null) {
return -1;
}
else if(o2 == null || o2.getLabel() == null) {
return 1;
}
else return o1.getLabel().compareTo(o2.getLabel());
}
}
If you remove Comparator interface and compare, everything is OK.
Affects: 2.5.5
Issue Links:
- MVC Annotation Inheritance [SPR-6093] #10761 MVC Annotation Inheritance