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

Using dispatcher FORWARD on FilterDispatcher causes ValueStack to be reseted



    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not A Problem
    • Affects Version/s:
    • Fix Version/s: Future
    • Component/s: Dispatch Filter
    • Labels:
    • Environment:

      Windows 7, Apache Tomcat 5.5.34

    • Flags:


      I need to allow struts 2 filter to work on Forward requests. The reason why I need it - we need to implement SEO Friendly urls with http://www.tuckey.org/urlrewrite/.
      And to make it work transparent for user, the above module does forward of all requests from user friendly url to "struts-friendly url"

      I have added the following filter mapping to web.xml to allow struts filter to be invoked on forward:


      Also in my struts.xml I have the following constant set

      <constant name="struts.locale" value="ru_RU"/>

      Just to note that I have all keys ONLY in MyResource_ru.properties defined.
      MyResource.properties - has no keys at all

      Now a few experiment that I perform:
      1) If I call <s:text name="some.key"/> on jsp - text is rendered correctly and retrieved from "_ru" resource bundle
      2) Now if I call from my action or from JSP using OGNL "getText" method on key that exists in "_ru" resource bundle, but do not exists in default resource bundle, I got key returned itself (e.g. "some.key")

      I've debugged the following method in LocalizedTextUtil class

          public static String findText(Class aClass, String aTextName, Locale locale, String defaultMessage, Object[] args) {
              ValueStack valueStack = ActionContext.getContext().getValueStack();
              return findText(aClass, aTextName, locale, defaultMessage, args, valueStack);

      SO, during <s:text> call "valueStack.context" property, contains 22 values. There is also "locale" defined, so retrieval of key from resource bundle works correctly.
      But during call to "getText" method, "valueStack.context" contains only 7 values. And locale is set to en_US

      So looks like context is not initialized




            • Assignee:
              okuryan Oleg
            • Votes:
              0 Vote for this issue
              1 Start watching this issue


              • Created: