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

    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

          People

            Unassigned Unassigned
            kiviuq Mo Be
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: