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
+
+
+