防止getText()评估EL表达式
在Struts2后端,我有一个动作类实例变量,例如: keyName
。 返回到视图的动态密钥(JSP)。
使用POST方法使用请求参数设置此keyName
变量。 根据请求参数值, keyName
会有所不同。
在JSP中,我使用
来显示与keyName变量给出的键对应的标签。
当我向keyName
发送例如${90-40}
的EL表达式时,正在评估此表达式并导致在UI上显示50。
我们如何使用getText()
避免或阻止这种EL注入?
有没有其他替代方法而不是
?
您可以创建自己的文本提供程序并在struts.xml
注册它:
现在创建一个MyTextProvier
类,它扩展TextProviderSupport
并覆盖getText()
方法。 所有方法都将参数key
作为String
,您可以从中替换不需要的字符。 然后调用super.getText()
。 例如
public String getText(String key) { return super.getText(key.replaceAll("[\\$\\{\\}]", "")); }