使用Struts 2.1.6,xwork 2.1.2和ognl 2.6.11 在我的struts动作中,我有一个Map,我从使用OGNL获取元素。如果我用来获取的密钥在地图中不存在,那么OGNL返回一个空的对象数组,OGNL转换为一个字符串,我得到对象引用java.lang.Object@6 ....这发生在几个places和似乎是具有指定为Object的泛型值的映射。这不是我可以改变的。 我已经跟踪了一段时间的问题了,但是当我最终深入到OGNL代码的内部时,我没有看到隧道尽头的灯光。目前我将使用一个丑陋的黑客检查字符串返回,看看它是否以“java.lang.Object @”开头,如果是,则返回一个空字符串。我不喜欢这个解决方案,但那是时间允许的。 有谁遇到过类似的问题?
此外,OpenSymphony去了哪里?他们的网站更新似乎已经枯竭,用户论坛表示他们将在11月12日至12月之间转换为Google网上论坛
答案 0 :(得分:2)
这是空值的问题:如果value为null,则默认行为是使用默认构造函数创建值。由于地图的值类型是Object,因此会创建新的对象,其中null为。
为了阻止这种行为:
@CreateIfNull( value = false )
mapName_CreateIfNull=false
。