I updated my project to Struts2 version 2.3.20 . Now all cases in my JSPs that uses static method access do not work.
ie.
<s:set var="linkEscaped"
value="@org.apache.commons.lang.StringEscapeUtils@escapeHtml(#attr.myObject.link)" />
I already have set in my struts.properties ->
struts.ognl.allowStaticMethodAccess=true
and tried in struts.xml ->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
with no success. Does anyone know what has changed and what do I need to do to enable them again?
I made it to work. Copy the following from the struts-default.xml and copy it into your application's struts.xml.
Remove only the the java.lang.Class from above. Save, compile, build, and deploy. Happy days!
But we are doing an exit strategy for this. We are making aware all our developers not to use static access anymore and start removing it (We don't have a lot of places this being used though)!
Update
Lukasz Lenart commented:
---
Allowing static method access was never a preferred way of doing things and in
2.3.20
it won't work even ifstruts.ognl.allowStaticMethodAccess
is set totrue
.From the wiki:
Also WW-4429.
Since static methods will not be able to be used in future releases, I decided to refactor the parts of the project that use them. The sooner the better.
So in y "BaseAction" I have created the methods I need and they call those methods. This way only the "safe" methods I allow can be used in the jsp.