Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.3.1.2
-
None
-
Win XP, Linux / JDK 7 (Oracle)
Description
@Namespace("/do") public class CRUDAction { /* [1] specific wildcard */ @Override @Action(value="some/usefull/{stuff}",results={@Result(location = "result.jsp")}) public String execute() throws Exception {...} /* [2] less specific wildcard */ @Override @Action(value="some/{stuff}", results={@Result(location ="result.jsp")}) public String input() throws Exception {...} }
Currently pattern [2] due to greedy natching catches every "/do/some/{stuff}" AND "/do/some/usefull/{stuff}" event.
For instance while calling /do/some/eating or /do/some/usefull/sleeping will both end in [2] where stuff becomes "eating" or "usefull/sleep" respectively, [1] is left behind with nothing to do.
The expected matching behaviour should always be from more specific to less specific.
I.e. [2] should never fire before [1]. So that /do/some/usefull/sleeping would correctly map to [1] with stuff==sleeping and /do/some/eating correctly maps to [2] with stuff==eating.
Using xml one can achieve the correct matching order by re-ordering the action definitions (most specific action mapping comes first)