Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-3784

Greedy and non-greedy matching behaviour should work in action methods using annotated wildcards

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.3.1.2
    • 7.0.0
    • Core Actions
    • 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)

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            kiviuq Mo Be

            Dates

              Created:
              Updated:

              Slack

                Issue deployment