首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止getText()计算EL表达式

防止getText()计算EL表达式
EN

Stack Overflow用户
提问于 2015-08-14 11:02:10
回答 2查看 769关注 0票数 2

在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)" />,还有其他替代方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-14 16:30:06

您可以创建自己的文本提供程序并在struts.xml中注册它。

代码语言:javascript
复制
<constant name="struts.xworkTextProvider" value="com.struts.text.MyTextProvier"/>

现在创建一个类MyTextProvier,它扩展TextProviderSupport并覆盖getText()方法。所有方法都以参数key作为String,您可以从其中替换不需要的字符。然后打电话给super.getText()。例如

代码语言:javascript
复制
public String getText(String key) {
  return super.getText(key.replaceAll("[\\$\\{\\}]", ""));
}
票数 2
EN

Stack Overflow用户

发布于 2015-08-14 12:29:52

使用<s:text name="keyName" />

http://struts.apache.org/docs/text.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32008505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档