2

之后,1.71.51.5 不存在的问题升级到速度引擎。为了解释这个问题,我必须展示一个代码片段:

#foreach($someVariable in $someCollection)
 #foreach($anotherVariable in $someVariable.$anotherCollection)
   $anotherVariable.someAttribute ## This expression print in the browser as is
   ## but if I do this way
   $anotherVariable.get("someAttribute") ## works fine!
 #end
#end

这发生在升级之后(在 中1.7),如果我回滚升级(移回1.5),那么我不必以我在上面的代码片段中提到的其他方式进行。

4

2 回答 2

0

尝试将以下内容添加到您的 MyClass extends HashMap:

public Object get(Object key) { return get((String)key); }

我担心 Velocity 可能会认识到它是一个 Map 并尝试一个不承认泛型的快捷方式,因此调用了错误的 get() 方法。但是我没有准备好在这台机器上确认这一点,我也没有时间这样做。对不起。

于 2012-12-26T16:28:41.217 回答
0

您可能需要检查您的 .java 文件。

#foreach($someVariable in $someCollection)
    #foreach($anotherVariable in $someVariable.$anotherCollection)
        $anotherVariable.someAttribute 
        $anotherVariable.get("someAttribute") 
    #end
#end

假设 someVariable 是类 X 的对象。对于您的 someVariable,应该有一个公共 get() 方法来获取类 X 中的 anotherCollection;同样,假设 anotherVariable 是类 Y 的对象。对于您的 anotherVariable,应该有一个公共 get() 方法来获取类 Y 中的 someAttribute。

这适用于我们尝试访问 someAttribute 的两种方式,如上所示。

于 2015-08-06T16:53:36.463 回答