diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java index a2f73879df..b821f7f88e 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java @@ -622,6 +622,9 @@ private ActionConfig findActionConfigInNamespace(String namespace, String name) String defaultActionRef = namespaceConfigs.get(namespace); if (defaultActionRef != null) { config = actions.get(defaultActionRef); + if (config == null) { + config = namespaceActionConfigMatchers.get(namespace).match(defaultActionRef); + } } } } diff --git a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationTest.java b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationTest.java index 520f8c2409..d23407b9e5 100644 --- a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationTest.java @@ -338,6 +338,26 @@ public void testPackageExtension() { } + public void testDefaultActionRefWithWildcard() { + RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration(); + ActionConfig config = runtimeConfiguration.getActionConfig("/wildcard-default", "unmatchedAction"); + assertNotNull("Wildcard default action ref should resolve via wildcard matching", config); + assertEquals("com.opensymphony.xwork2.SimpleAction", config.getClassName()); + } + + public void testDefaultActionRefWithExactMatch() { + RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration(); + ActionConfig config = runtimeConfiguration.getActionConfig("/exact-default", "unmatchedAction"); + assertNotNull("Exact default action ref should resolve via exact matching", config); + assertEquals("com.opensymphony.xwork2.SimpleAction", config.getClassName()); + } + + public void testDefaultActionRefWithWildcardNoMatch() { + RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration(); + ActionConfig config = runtimeConfiguration.getActionConfig("/wildcard-default-nomatch", "unmatchedAction"); + assertNull("Default action ref with no matching action should return null", config); + } + @Override protected void setUp() throws Exception { super.setUp(); diff --git a/core/src/test/resources/xwork-sample.xml b/core/src/test/resources/xwork-sample.xml index 4e62f4c12a..c2b17e154b 100644 --- a/core/src/test/resources/xwork-sample.xml +++ b/core/src/test/resources/xwork-sample.xml @@ -295,5 +295,26 @@ + + + + /movie/{1}.jsp + + + + + + + /home.jsp + + + + + + + /movie/{1}.jsp + + +