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