@@ -115,15 +115,24 @@ public UrlCreator getReverseMapping(final String controller, final String action
115115 mapping = (UrlMapping )mappingsLookup .get (new UrlMappingKey (controller , action , Collections .EMPTY_SET ));
116116 }
117117 if (mapping == null || (mapping instanceof ResponseCodeUrlMapping )) {
118- Set lookupParams = new HashSet (params .keySet ());
119- lookupParams .addAll (DEFAULT_ACTION_PARAMS );
118+ Set lookupParams = new HashSet (DEFAULT_ACTION_PARAMS );
119+ Set paramKeys = params .keySet ();
120+ lookupParams .addAll (paramKeys );
120121 mapping = (UrlMapping )mappingsLookup .get (new UrlMappingKey (controller , null , lookupParams ));
122+ if (mapping == null ) {
123+ lookupParams .removeAll (paramKeys );
124+ mapping = (UrlMapping )mappingsLookup .get (new UrlMappingKey (controller , null , lookupParams ));
125+ }
121126 }
122127 if (mapping == null || (mapping instanceof ResponseCodeUrlMapping )) {
123- Set lookupParams = new HashSet (params . keySet () );
124- lookupParams . addAll ( DEFAULT_CONTROLLER_PARAMS );
125-
128+ Set lookupParams = new HashSet (DEFAULT_CONTROLLER_PARAMS );
129+ Set paramKeys = params . keySet ( );
130+ lookupParams . addAll ( paramKeys );
126131 mapping = (UrlMapping )mappingsLookup .get (new UrlMappingKey (null , null , lookupParams ));
132+ if (mapping == null ) {
133+ lookupParams .removeAll (paramKeys );
134+ mapping = (UrlMapping )mappingsLookup .get (new UrlMappingKey (null , null , lookupParams ));
135+ }
127136 }
128137 if (mapping == null || (mapping instanceof ResponseCodeUrlMapping )) {
129138 return new DefaultUrlCreator (controller , action );
0 commit comments