Мы используем валидаторы Struts 2 @FieldExpressionValidator
и @ExpressionValidator
. Эти валидаторы проверяют выражение OGNL. Есть много случаев, когда мы имеем дело со строками в этих выражениях.
expression="(captcha=='' && captcha== null || ....)
Мы считаем, что здесь очень полезно использовать StringUtils ( isEmpty ,trimToEmpty,... ).
Поскольку мы установили для struts.ognl.allowStaticMethodAccess
значение false, из соображений безопасности мы попытались решить эту проблему, добавив этот геттер в действие.
public StringUtils getStringUtils(){
return new StringUtils();
}
а затем stringUtils.isEmpty(captcha)
в выражении. Но это не сработало.
Для отладки мы протестировали
ActionContext.getContext().getValueStack().findValue("stringUtils"); //returns org.apache.commons.lang3.StringUtils@693ade51 which shows there is an object in the stack
ActionContext.getContext().getValueStack().findValue("stringUtils.isEmpty('dd')"); //returns null
Любые комментарии ?!