Greetings, Firstly, I apologize if i display an inordinate amount of ignorance. However, after looking for quite some time, I'm failing to find the answer to my question, and practical application seems to point at there being either something obvious I'm missing, or a flaw in the documentation, or similar.
Some Notes: Logs are what I'm pulling out of NetBeans from the Apache tomcat logs. I'm using struts-2.1.8.1, I've not changed the properties file for struts. Given the struts.xml snippet: <action name="*" method="{1}" class="web.BaseView"> <result name="success" type="tiles">Welcome</result> <result name="test" type="tiles">test</result> </action> <action name="Project*" method="{1}" class="web.ProjectView"> <result name="none" type="tiles">NoProject</result> </action> I generate the log results as follows: 20676 [http-8084-2] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.defaulttextprovi...@61b59919], property=struts] 20682 [http-8084-2] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.defaulttextprovi...@61b59919], property=struts] 20689 [http-8084-2] DEBUG com.opensymphony.xwork2.DefaultActionProxy - Creating an DefaultActionProxy for namespace / and action name ProjectStatus 20689 [http-8084-2] DEBUG com.opensymphony.xwork2.config.impl.AbstractMatcher - Attempting to match 'ProjectStatus' to a wildcard pattern, 3 available 20689 [http-8084-2] DEBUG com.opensymphony.xwork2.config.impl.AbstractMatcher - Value matches pattern '*' 20703 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - intercept '//ProjectStatus' { 20704 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - applied invocation context locale=en 20704 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - before Locale=en 20735 [http-8084-2] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[web.basev...@55d7fc31, com.opensymphony.xwork2.defaulttextprovi...@61b59919], property=struts] 20765 [http-8084-2] DEBUG org.apache.struts2.interceptor.FileUploadInterceptor - Bypassing //ProjectStatus 20765 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.StaticParametersInterceptor - Setting static parameters {} 20767 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params NONE 20767 [http-8084-2] DEBUG com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params As you can see the "*" is matched as opposed to "Project*", which seems to go against the 'last one wins' as is described by the struts documentation on http://struts.apache.org/2.1.8.1/docs/wildcard-mappings.html Now, if I reverse the order of the actions in struts.xml I get the following result: 13176 [http-8084-1] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.defaulttextprovi...@18a4edc4], property=struts] 13176 [http-8084-1] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.defaulttextprovi...@18a4edc4], property=struts] 13176 [http-8084-1] DEBUG com.opensymphony.xwork2.DefaultActionProxy - Creating an DefaultActionProxy for namespace / and action name ProjectStatus 13176 [http-8084-1] DEBUG com.opensymphony.xwork2.config.impl.AbstractMatcher - Attempting to match 'ProjectStatus' to a wildcard pattern, 3 available 13176 [http-8084-1] DEBUG com.opensymphony.xwork2.config.impl.AbstractMatcher - Value matches pattern 'Project*' 13177 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - intercept '//ProjectStatus' { 13177 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - applied invocation context locale=en 13177 [http-8084-1] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[web.projectv...@63ad6884, com.opensymphony.xwork2.defaulttextprovi...@18a4edc4], property=locale] 13177 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor - before Locale=null 13177 [http-8084-1] DEBUG com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[web.projectv...@63ad6884, com.opensymphony.xwork2.defaulttextprovi...@18a4edc4], property=struts] 13178 [http-8084-1] DEBUG org.apache.struts2.interceptor.FileUploadInterceptor - Bypassing //ProjectStatus 13178 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.StaticParametersInterceptor - Setting static parameters {} 13179 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params NONE 13179 [http-8084-1] DEBUG com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params Here, the "Project*" action is being matched as opposed to "*" despite being first. I'm failing to see how 'last one wins' Regards, Robert p.s. my apologies if there's multi-post here, I had a moment or so of user fail.