我的Struts 2应用中存在问题。
我读了一个数组迭代器的内容。
数组元素由迭代器写出:
<s:text name="#wApps.title"/>
标记找到正确的元素并对其进行求值,但结果表达式具有+
字符(例如:数组元素具有值:"Weather+ Free"
'),并继续对其进行求值。最后,它写出了值:nullnull
。
如何跳过第二次评估?
以下是日志:
Jun 18, 2013 5:29:40 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: The first TextProvider in the ValueStack (rs.plusnet.android.market.AndroidMarket.UI.ListCategory) could not locate the message resource with key '**Weather+ Free**'
Jun 18, 2013 5:29:40 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: The default value expression 'Weather+ Free' evaluated to '**nullnull**'
答案 0 :(得分:1)
这不是struts,OGNL问题。如果没有包含子表达式的特殊语法,OGNL不会对表达式进行两次计算。但是,“+”符号是一个运算符,如果您在没有配额的情况下输入表达式,则会对其进行评估。
使用如此值的配额进行环绕以防止评估。
<s:set var="title" value="'Weather+ Free'"/>
或像这样使用身体中的值
<s:set var="title">Weather+ Free</s:set>
检查
<s:property value="#title"/>
此外,如果值在action属性或任何其他范围内,则不应进行双重评估。