【问题标题】:Struts 2 WARNING: The default value expression contains "+" evaluated to 'nullnull'Struts 2 警告:默认值表达式包含“+”评估为“nullnull”
【发布时间】:2013-06-18 10:49:14
【问题描述】:

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

【问题讨论】:

    标签: java jsp struts2 ognl valuestack


    【解决方案1】:

    这不是struts,OGNL的问题。 OGNL 不会计算表达式两次,没有包含子表达式的特殊语法。但是,“+”号是一个运算符,如果您在没有配额的情况下输入表达式,则会计算表达式。

    用配额包围这样的值以防止评估。

    <s:set var="title" value="'Weather+ Free'"/>
    

    或者像这样使用body中的值

    <s:set var="title">Weather+ Free</s:set>
    

    检查一下

    <s:property value="#title"/>
    

    此外,如果该值在 action 属性或任何其他范围内,则永远不应发生双重评估。

    【讨论】:

    • @AndreaLigios 其实最初的情况应该不会出现,只有手动输入表达式到value属性才会出现。
    • 非常感谢!解决方案 绝对解决了我的问题。
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多