Skip to content

Commit 8528904

Browse files
Working on #9478
A functional test: grails/grails3-functional-tests@45e2c10f647036 03d97840f9822e0f396c634726
1 parent 76944ed commit 8528904

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

grails-core/src/main/groovy/grails/core/GrailsControllerClass.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,6 @@ public interface GrailsControllerClass extends InjectableGrailsClass {
120120
* @param urlConverter The {@link grails.web.UrlConverter} to register
121121
*/
122122
void registerUrlConverter(UrlConverter urlConverter);
123+
124+
String actionUriToViewName(String actionUri);
123125
}

grails-core/src/main/groovy/org/grails/core/DefaultGrailsControllerClass.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public class DefaultGrailsControllerClass extends AbstractInjectableGrailsClass
5151
private Map<String, FastMethod> actions = new HashMap<String, FastMethod>();
5252
private String defaultActionName;
5353
private String namespace;
54-
54+
protected Map<String, String> actionUriToViewName = new HashMap<String, String>();
55+
5556
public DefaultGrailsControllerClass(Class<?> clazz) {
5657
super(clazz, CONTROLLER);
5758
namespace = getStaticPropertyValue(NAMESPACE_PROPERTY, String.class);
@@ -150,6 +151,7 @@ public boolean mapsToURI(String uri) {
150151
@Override
151152
public void registerUrlConverter(UrlConverter urlConverter) {
152153
for (String actionName : new ArrayList<String>(actions.keySet())) {
154+
actionUriToViewName.put(urlConverter.toUrlElement(actionName), actionName);
153155
actions.put( urlConverter.toUrlElement(actionName), actions.remove(actionName));
154156
}
155157
}
@@ -170,4 +172,9 @@ public Object invoke(Object controller, String action) throws Throwable {
170172
return handle.invoke(controller, EMPTY_ARGS);
171173
}
172174

175+
public String actionUriToViewName(String actionUri) {
176+
String actionName = actionUriToViewName.get(actionUri);
177+
178+
return actionName != null ? actionName : actionUri;
179+
}
173180
}

grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ class UrlMappingsInfoHandlerAdapter implements HandlerAdapter, ApplicationContex
9797
return (ModelAndView) modelAndView
9898
}
9999
else if(result instanceof Map) {
100-
return new ModelAndView(action, new HashMap<String, Object>((Map)result))
100+
String viewName = controllerClass.actionUriToViewName(action)
101+
return new ModelAndView(viewName, new HashMap<String, Object>((Map)result))
101102
}
102103
else if(result instanceof ModelAndView) {
103104
return (ModelAndView) result

0 commit comments

Comments
 (0)