【问题标题】:Struts 2 WARNING: The default value expression contains "+" evaluated to 'nullnull'Struts 2 警告:默认值表达式包含 \"+\" 评估为 \'nullnull\'
【发布时间】:2014-04-09 22:49:33
【问题描述】:

我的 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'"/>
    

    或像这样使用正文中的值

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

    检查它

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

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

    【讨论】:

    • @AndreaLigios实际上,最初的情况不应该发生,只有在您手动将表达式输入到 value 属性时才会发生。
    • 非常感谢!解决方案 <s:property value="#title"/> 绝对解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多