Struts 2警告:默认值表达式包含“+”,计算为“nullnull”

时间:2013-06-18 10:49:15

标签: java jsp struts2 ognl valuestack

我的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**'

1 个答案:

答案 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属性或任何其他范围内,则不应进行双重评估。