Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
2.3.1.1
-
None
-
None
-
Windows 7, Apache Tomcat 5.5.34
-
Important
Description
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:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> .... <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
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