The struts 2 set the struts.ognl.allowStaticMethodAccess
to false
, for security issues. The static method invocation may be useful in some cases for example when dealing with expression base validators Struts 2 using StringUtils in validator expersions.
One way to solve this problem is to define a helper method in the action, for example, if we want to use Math
class we should add below:
public double randomMath(){
return Math.random();
}
public double asinMath(double a){
return Math.asin(a);
}
....
And use it as ${randomMath}
or ${asinMath(1)}
As you can see for every method in Math
class we need to define a public
method in our action, with same signature.
Is there a better way to avoid these boilerplate getters?!
OGNL allows execution of methods, but the static access is disabled by default, so you cannot use static method in expressions. However, you can teach OGNL which classes needs to access the static methods.
You can code something
Action class
In JSP