在Struts2后端,我有一个操作类实例变量,例如:keyName。返回到视图(JSP)的动态键。
使用POST方法使用请求参数设置此keyName变量。根据请求参数值的不同,keyName将有所不同。
在JSP中,我使用<s:property value="getText(keyName)" />来显示与keyName变量提供的键对应的标签。
例如,当我向${90-40}发送EL表达式时,将对该表达式进行计算,从而在UI上显示50。
我们怎样才能避免或防止使用getText()进行EL注射?
除了<s:property value="getText(keyName)" />,还有其他替代方法吗?
发布于 2015-08-14 16:30:06
您可以创建自己的文本提供程序并在struts.xml中注册它。
<constant name="struts.xworkTextProvider" value="com.struts.text.MyTextProvier"/>现在创建一个类MyTextProvier,它扩展TextProviderSupport并覆盖getText()方法。所有方法都以参数key作为String,您可以从其中替换不需要的字符。然后打电话给super.getText()。例如
public String getText(String key) {
return super.getText(key.replaceAll("[\\$\\{\\}]", ""));
}发布于 2015-08-14 12:29:52
使用<s:text name="keyName" />
http://struts.apache.org/docs/text.html
https://stackoverflow.com/questions/32008505
复制相似问题