【问题标题】:Using OGNL to return data from a Map<String,Object>使用 OGNL 从 Map<String,Object> 返回数据
【发布时间】:2010-02-17 21:37:15
【问题描述】:

使用 Struts 2.1.6、xwork 2.1.2 和 ognl 2.6.11 在我的 struts 操作中,我有一个 Map,我正在使用 OGNL 获取元素。如果映射中不存在我用来获取的键,则 OGNL 返回一个空对象数组,OGNL 将其转换为字符串,我得到对象引用 java.lang.Object@6...。这发生在几个地点并且似乎是具有指定为对象的通用值的地图。这不是我能改变的。 我已经对这个问题进行了一段时间的追踪,但是当我深入 OGNL 代码的核心时,我并没有在隧道尽头看到一丝曙光。目前,我将使用一个丑陋的技巧来检查字符串返回,看看它是否以“java.lang.Object@”开头,如果是,则返回一个空字符串。我不喜欢这个解决方案,但那是时间允许的。 有没有人遇到过类似的问题?

另外,OpenSymphony 去哪儿了?他们网站的更新似乎已经枯竭,用户论坛表示他们将在 2009 年 11 月 12 日之前转换为 Google 群组

【问题讨论】:

    标签: struts2 ognl


    【解决方案1】:

    这是空值的问题:如果值为空,默认行为是使用默认构造函数创建一个值。由于您的地图的值类型是 Object,因此会在 null 所在的位置创建新的 Object。

    为了阻止这种行为:

    • 使用@CreateIfNull( value = false )
    • 在 classname-convertion.properties 文件中使用 mapName_CreateIfNull=false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2018-09-22
      • 1970-01-01
      相关资源
      最近更新 更多